scsi: megaraid_sas: Correct value passed to scsi_device_lookup()
authorGuixin Liu <kanie@linux.alibaba.com>
Wed, 14 Sep 2022 08:47:59 +0000 (16:47 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 1 Oct 2022 09:21:30 +0000 (05:21 -0400)
The "id" parameter currently passed to scsi_device_lookup() when removing a
device is incorrect. It should be "ld_target_id %
MEGASAS_MAX_DEV_PER_CHANNEL".

Link: https://lore.kernel.org/r/1663145283-4872-2-git-send-email-kanie@linux.alibaba.com
Fixes: ae6874ba4b43 ("scsi: megaraid_sas: Early detection of VD deletion through RaidMap update")
Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas_base.c

index ae6b9a570fa923831dedb5ec3174d2c2fc7695ef..1772b0be88fe79bd52011be396203adc468c130f 100644 (file)
@@ -8924,7 +8924,7 @@ megasas_aen_polling(struct work_struct *work)
                        sdev1 = scsi_device_lookup(instance->host,
                                                   MEGASAS_MAX_PD_CHANNELS +
                                                   (ld_target_id / MEGASAS_MAX_DEV_PER_CHANNEL),
-                                                  (ld_target_id - MEGASAS_MAX_DEV_PER_CHANNEL),
+                                                  (ld_target_id % MEGASAS_MAX_DEV_PER_CHANNEL),
                                                   0);
                        if (sdev1)
                                megasas_remove_scsi_device(sdev1);