Message ID | 1462819450.16056.2.camel@petroskoutoupis.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
>>>>> "Petros" == Petros Koutoupis <petros@petroskoutoupis.com> writes:
Petros> The device ID obtained from the inquiry can only be of a single
Petros> type. The original code places a check for TYPE_ZBC right after
Petros> the check for TYPE_DISK. Logically, if the first if statement
Petros> sees a device of a TYPE_DISK and moves on to the second
Petros> statement checking if not TYPE_ZBC, it will always hit the
Petros> continue.
Did not apply to 4.7/scsi-queue. I merged it by hand.
--- linux/drivers/scsi/hpsa.c.orig 2016-04-27 21:43:44.463140419 -0500 +++ linux/drivers/scsi/hpsa.c 2016-04-27 22:45:31.015140419 -0500 @@ -1637,9 +1637,8 @@ static void hpsa_figure_phys_disk_ptrs(s for (j = 0; j < ndevices; j++) { if (dev[j] == NULL) continue; - if (dev[j]->devtype != TYPE_DISK) - continue; - if (dev[j]->devtype != TYPE_ZBC) + if ((dev[j]->devtype != TYPE_DISK) && + (dev[j]->devtype != TYPE_ZBC)) continue; if (is_logical_device(dev[j])) continue; @@ -1684,9 +1683,8 @@ static void hpsa_update_log_drive_phys_d for (i = 0; i < ndevices; i++) { if (dev[i] == NULL) continue; - if (dev[i]->devtype != TYPE_DISK) - continue; - if (dev[i]->devtype != TYPE_ZBC) + if ((dev[i]->devtype != TYPE_DISK) && + (dev[i]->devtype != TYPE_ZBC)) continue; if (!is_logical_device(dev[i])) continue;