CVE-2026-43054Linux内核中的scsi: target: tcm_loop模块存在一个漏洞。该漏洞源于tcm_loop_target_reset()函数在返回成功前未正确排空进行中的命令,违反了SCSI错误处理契约。这导致SCSI错误处理机制重用命令结构时,由于目标核心仍有未完成的异步工作,且memset操作清除了关键标志,导致LUN引用计数泄漏。最终,当尝试删除LUN时,系统任务会无限期挂起,导致拒绝服务。
该漏洞位于Linux内核的tcm_loop驱动中。当发生目标重置时,tcm_loop_target_reset()函数未遵循SCSI EH(Error Handling)契约,即未等待或排空进行中的scsi_cmnd命令就直接返回SUCCESS。随后,SCSI EH层重用这些命令结构发送恢复命令(如TUR),而旧的se_cmd的异步完成工作仍在队列中。由于queuecommand中存在memset操作,会将se_lun和lun_ref_active清零,导致transport_lun_remove_cmd()跳过percpu_ref_put()调用。结果造成LUN引用计数无法归零,transport_clear_lun_ref()在等待引用释放时死锁,导致删除LUN的系统调用(如rm)永久阻塞在D-state。