chiark / gitweb /
scsi_id: the fallback fix broke error handling
authorKay Sievers <kay.sievers@vrfy.org>
Thu, 10 Jul 2008 20:22:10 +0000 (22:22 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Thu, 10 Jul 2008 20:22:10 +0000 (22:22 +0200)
extras/scsi_id/scsi_id.c
extras/scsi_id/scsi_serial.c

index 5eb95e8..bc942fa 100644 (file)
@@ -551,7 +551,7 @@ static int set_inq_values(struct scsi_id_device *dev_scsi, const char *path)
 
        retval = scsi_std_inquiry(dev_scsi, path);
        if (retval)
-           return retval;
+               return retval;
 
        set_str(vendor_str, dev_scsi->vendor, sizeof(vendor_str));
        set_str(model_str, dev_scsi->model, sizeof(model_str));
index 8f16030..016075c 100644 (file)
@@ -351,13 +351,13 @@ resend:
                io_buf = (void *)&io_hdr;
        }
 
-       if (ioctl(fd, SG_IO, io_buf) < 0) {
+       retval = ioctl(fd, SG_IO, io_buf);
+       if (retval < 0) {
                if ((errno == EINVAL || errno == ENOSYS) && dev_scsi->use_sg == 4) {
                        dev_scsi->use_sg = 3;
                        goto resend;
                }
                info("%s: ioctl failed: %s\n", dev_scsi->kernel, strerror(errno));
-               retval = -1;
                goto error;
        }
 
@@ -806,6 +806,7 @@ int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname)
        if (err < 0)
                goto out;
 
+       err = 0;
        memcpy(dev_scsi->vendor, buf + 8, 8);
        dev_scsi->vendor[8] = '\0';
        memcpy(dev_scsi->model, buf + 16, 16);