Thread (8 messages) 8 messages, 4 authors, 2021-10-06

RE: [PATCH] scsi: storvsc: Cap scsi_driver.can_queue to fix a hang issue during boot

From: Dexuan Cui <decui@microsoft.com>
Date: 2021-10-06 17:28:44
Also in: linux-hyperv, linux-scsi, lkml
Subsystem: scsi subsystem, the rest · Maintainers: "James E.J. Bottomley", "Martin K. Petersen", Linus Torvalds

From: John Garry <redacted>
Sent: Wednesday, October 6, 2021 9:03 AM
quoted
quoted
...
quoted
+	if (scsi_driver.can_queue > SHRT_MAX)
+		scsi_driver.can_queue = SHRT_MAX;
+
This fix works, but is a more of a temporary hack until I can finish
a larger overhaul of the algorithm.
quoted
But for now, I think the better
fix is for ea2f0f77538c to do the comparison as "int" instead of "short".
That seems better to me. But Let's wait for other possible opinion.

Thanks,
John
It looks like shost->cmd_per_lun has been "short" since day 1.
I don't know whether it should be changed to unsigned int.

Thanks for the thoughts! I'll post a v2 like the below in 24 hours.
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 3f6f14f0cafb..24b72ee4246f 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -220,7 +220,8 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, struct device *dev,
                goto fail;
        }

-       shost->cmd_per_lun = min_t(short, shost->cmd_per_lun,
+       /* Use min_t(int, ...) in case shost->can_queue exceeds SHRT_MAX */
+       shost->cmd_per_lun = min_t(int, shost->cmd_per_lun,
                                   shost->can_queue);

        error = scsi_init_sense_cache(shost)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help