-               if (devmask & (1 << i)) {
-                       if (!strcmp("vol", vnames[i])) {
-                               ioctl(afd, MIXER_READ(i), &v);
+               if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
+                       if (ioctl(afd, MIXER_READ(i), &v) == -1) {
+                               warn("vol_perc: ioctl");
+                               close(afd);
+                               return smprintf("%s", UNKNOWN_STR);