In the Linux kernel, the following vulnerability has been resolved:
scsi: target: core: Add TMF to tmr_list handling
An abort that is responded to by iSCSI itself is added to tmrlist but does not go to target core. A LUNRESET that goes through tmr_list takes a refcounter on the abort and waits for completion. However, the abort will be never complete because it was not started in target core.
Unable to locate ITT: 0x05000000 on CID: 0 Unable to locate RefTaskTag: 0x05000000 on CID: 0. waitfortasks: Stopping tmf LUNRESET with tag 0x0 reftasktag 0x0 istate 34 tstate ISTATEPROCESSING refcnt 2 transportstate active,stop,fabricstop wait for tasks: tmf LUNRESET with tag 0x0 reftasktag 0x0 istate 34 tstate ISTATEPROCESSING refcnt 2 transportstate active,stop,fabricstop ... INFO: task kworker/0:2:49 blocked for more than 491 seconds. task:kworker/0:2 state:D stack: 0 pid: 49 ppid: 2 flags:0x00000800 Workqueue: events targettmrwork [targetcoremod] Call Trace: _switchto+0x2c4/0x470 schedule+0x314/0x1730 schedule+0x64/0x130 scheduletimeout+0x168/0x430 waitforcompletion+0x140/0x270 targetputcmdandwait+0x64/0xb0 [targetcoremod] coretmrlunreset+0x30/0xa0 [targetcoremod] targettmrwork+0xc8/0x1b0 [targetcoremod] processonework+0x2d4/0x5d0 workerthread+0x78/0x6c0
To fix this, only add abort to tmr_list if it will be handled by target core.