{"id":28596,"date":"2026-09-25T04:31:26","date_gmt":"2026-09-24T20:31:26","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93781"},"modified":"2026-09-25T04:31:26","modified_gmt":"2026-09-24T20:31:26","slug":"cve-2026-93781","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93781","title":{"rendered":"CVE-2026-93781 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: core: Do not bl"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: core: Do not block on tag allocation in scsi_eh_lock_door()<\/p>\n<p>scsi_eh_lock_door() is called from scsi_restart_operations() while the<br \/>\nhost is still in the SHOST_RECOVERY state, i.e. before the host is<br \/>\nswitched back to SHOST_RUNNING and scsi_run_host_queues() restarts the<br \/>\nqueues. It allocates a request via scsi_alloc_request() with no flags,<br \/>\nso blk_mq_get_tag() may block waiting for a free sched tag when all tags<br \/>\nare already in use.<\/p>\n<p>Those tags can be held by commands that were just requeued by<br \/>\nscsi_eh_flush_done_q() during error handling. Such commands cannot be<br \/>\ndispatched until the host leaves SHOST_RECOVERY and<br \/>\nscsi_run_host_queues() is called &#8211; which only happens *after*<br \/>\nscsi_eh_lock_door() returns.<\/p>\n<p>This forms a circular dependency:<\/p>\n<p>  &#8211; scsi_eh_lock_door(), running in the SCSI error handler thread, waits<br \/>\n    for a sched tag held by a requeued command;<\/p>\n<p>  &#8211; the requeued command cannot complete and release its sched tag until<br \/>\n    the error handler thread leaves scsi_restart_operations() and restart<br \/>\n    the queues.<\/p>\n<p>For devices with a single driver tag (e.g. USB storage) it is a<br \/>\nguaranteed deadlock and I\/O that can never be submitted. This problem<br \/>\nhas also been reproduced in our environment.<\/p>\n<p>Locking the door is a best-effort operation, and scsi_eh_lock_door()<br \/>\nalready returns silently when the request allocation fails. Pass<br \/>\nBLK_MQ_REQ_NOWAIT to scsi_alloc_request() so the allocation fails<br \/>\ninstead of blocking when no tag is available. This breaks the circular<br \/>\ndependency and allows the error handler to finish restarting the queues,<br \/>\nafter which the pending commands are dispatched normally.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: core: Do not block on tag allocation in scsi_eh_lock_door()<\/p>\n<p>scsi_eh_lock_door() is called from scsi_restart_operations() whi<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28596","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}