CVE-2026-93781
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
24/09/2026
Última modificación:
03/10/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
scsi: core: Do not block on tag allocation in scsi_eh_lock_door()<br />
<br />
scsi_eh_lock_door() is called from scsi_restart_operations() while the<br />
host is still in the SHOST_RECOVERY state, i.e. before the host is<br />
switched back to SHOST_RUNNING and scsi_run_host_queues() restarts the<br />
queues. It allocates a request via scsi_alloc_request() with no flags,<br />
so blk_mq_get_tag() may block waiting for a free sched tag when all tags<br />
are already in use.<br />
<br />
Those tags can be held by commands that were just requeued by<br />
scsi_eh_flush_done_q() during error handling. Such commands cannot be<br />
dispatched until the host leaves SHOST_RECOVERY and<br />
scsi_run_host_queues() is called - which only happens *after*<br />
scsi_eh_lock_door() returns.<br />
<br />
This forms a circular dependency:<br />
<br />
- scsi_eh_lock_door(), running in the SCSI error handler thread, waits<br />
for a sched tag held by a requeued command;<br />
<br />
- the requeued command cannot complete and release its sched tag until<br />
the error handler thread leaves scsi_restart_operations() and restart<br />
the queues.<br />
<br />
For devices with a single driver tag (e.g. USB storage) it is a<br />
guaranteed deadlock and I/O that can never be submitted. This problem<br />
has also been reproduced in our environment.<br />
<br />
Locking the door is a best-effort operation, and scsi_eh_lock_door()<br />
already returns silently when the request allocation fails. Pass<br />
BLK_MQ_REQ_NOWAIT to scsi_alloc_request() so the allocation fails<br />
instead of blocking when no tag is available. This breaks the circular<br />
dependency and allows the error handler to finish restarting the queues,<br />
after which the pending commands are dispatched normally.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/261c80a6b23e34ba98bcf3f75317e35ecf0a08f0
- https://git.kernel.org/stable/c/3bc7af4cefac1c583f0607f6183a67012436aad9
- https://git.kernel.org/stable/c/6b450c277c106c4e31411067f025d1aaa27c2a02
- https://git.kernel.org/stable/c/732cb6bb37fd26863d5786522fb1997e7f5865b4
- https://git.kernel.org/stable/c/dc9e1b6b9080dd6374cc9a38e4b53abca63c3b1b


