Description
In the Linux kernel, the following vulnerability has been resolved: scsi: core: Run queues for all non-SDEV_DEL devices from scsi_run_host_queues While a SCSI host is in a recovery state, scsi_mq_requeue_cmd() will not set the requeue list for a requeued command to be kicked in the future. The expectation is a call to scsi_run_host_queues() will kick all SCSI devices once the recovery state is cleared. However, scsi_run_host_queues() uses shost_for_each_device() which uses scsi_device_get() and so will ignore devices in a partially removed state like SDEV_CANCEL. But these devices may also have requeued requests, leaving their requests stuck from not being kicked and causing the removal process of the device to hang. scsi_run_host_queues() needs to run against more devices than the macro shost_for_each_device() allows. Instead of using the too limiting scsi_device_get() state checks, only ignore devices in SDEV_DEL state or when unable to acquire a reference. Attempt to run the queues for all other devices when scsi_run_host_queues() is called.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
8b566edbdbfb5cde31a322c57932694ff48125ed to < 15fb19af49f2073ed77fad16aaabc648b0ca6800affected8b566edbdbfb5cde31a322c57932694ff48125ed to < d4dddfecdbb5467bef158d4e1486459808357fefaffected8b566edbdbfb5cde31a322c57932694ff48125ed to < 475f2b37a78f4c698967a7f14f325f04e24c9175affected8b566edbdbfb5cde31a322c57932694ff48125ed to < c740e13e7fe32d8e4d9a1699f65b8daf6709895aaffected8b566edbdbfb5cde31a322c57932694ff48125ed to < 7205b58702273baf21d6ba7992e6ba15852325f7affected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected6.6.143 to ≤ 6.6.*unaffected6.12.93 to ≤ 6.12.*unaffected6.18.35 to ≤ 6.18.*unaffected7.0.12 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/15fb19af49f2073ed77fad16aaabc648b0ca6800 ↗
- https://git.kernel.org/stable/c/d4dddfecdbb5467bef158d4e1486459808357fef ↗
- https://git.kernel.org/stable/c/475f2b37a78f4c698967a7f14f325f04e24c9175 ↗
- https://git.kernel.org/stable/c/c740e13e7fe32d8e4d9a1699f65b8daf6709895a ↗
- https://git.kernel.org/stable/c/7205b58702273baf21d6ba7992e6ba15852325f7 ↗