Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

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