製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける有効なライフタイム後のリソースの解放の欠如に関する脆弱性
Title LinuxのLinux Kernelにおける有効なライフタイム後のリソースの解放の欠如に関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。scsi: target: tcm_loop: target_resetハンドラーでのコマンド排出問題です。tcm_loop_target_reset()はSCSI EHの契約に違反しており、実際にはコマンドを排出せずにSUCCESSを返しています。SCSI EHのドキュメント(scsi_eh.rst)によると、リセットハンドラーがSUCCESSを返す場合、ドライバーは下位層の「タイムアウトしたscmdを忘れておらず」、新しいコマンドの準備ができている必要があると規定されています。他のすべてのSCSI LLD(virtio_scsi、mpt3sas、ipr、scsi_debug、mpi3mr)は、SUCCESSを返す前に保留中のコマンドを排出または完了させることでこれを保証しています。tcm_loop_target_reset()がコマンドを排出しないため、SCSI EHはターゲットコアがまだ古いse_cmdの非同期完了作業を保持している間に回復コマンド(例:TUR)に対してin-flightのscsi_cmnd構造を再利用してしまいます。queuecommand内のmemsetがse_lunとlun_ref_activeをゼロクリアし、transport_lun_remove_cmd()がpercpu_ref_put()の呼び出しをスキップします。このリークしたLUN参照によりtransport_clear_lun_ref()が完了せず、configfsのLUN解除はD状態で永久にハングします。INFO: task rm:264 が122秒以上ブロックされています。rm D 0 264 258 0x00004000 Call Trace: __schedule+0x3d0/0x8e0、schedule+0x36/0xf0、transport_clear_lun_ref+0x78/0x90 [target_core_mod]、core_tpg_remove_lun+0x28/0xb0 [target_core_mod]、target_fabric_port_unlink+0x50/0x60 [target_core_mod]、configfs_unlink+0x156/0x1f0 [configfs]、vfs_unlink+0x109/0x290、do_unlinkat+0x1d5/0x2d0。修正内容は、tcm_loop_target_reset()で実際にコマンドを排出することです。1. tcm_loop_issue_tmr()を介してTMR_LUN_RESETを発行し、ターゲットコアが知っているすべてのコマンド(まだCMD_T_COMPLETEでないもの)を排出します。2. blk_mq_tagset_busy_iter()を用いて開始されたすべてのリクエストを反復処理し、各se_cmdに対してflush_work()を行います。これはTMRの前にすでにCMD_T_COMPLETEがセットされていたコマンドの保留中完了作業を排出するためのものであり(TMRは__target_check_io_state()でこれらをスキップします)、mpi3mr、scsi_debug、libsasがリセット時に未完了コマンドを排出するために使用しているパターンと同様です。

Possible impacts 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date May 1, 2026, midnight
Registration Date May 11, 2026, 10:56 a.m.
Last Update May 11, 2026, 10:56 a.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 5.13 以上 5.15.203 未満
Linux Kernel 5.16 以上 6.1.168 未満
Linux Kernel 6.13 以上 6.18.22 未満
Linux Kernel 6.19 以上 6.19.12 未満
Linux Kernel 6.2 以上 6.6.134 未満
Linux Kernel 6.7 以上 6.12.81 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月11日]
  掲載
May 11, 2026, 10:56 a.m.

NVD Vulnerability Information
CVE-2026-43054
Summary

In the Linux kernel, the following vulnerability has been resolved:

scsi: target: tcm_loop: Drain commands in target_reset handler

tcm_loop_target_reset() violates the SCSI EH contract: it returns SUCCESS
without draining any in-flight commands. The SCSI EH documentation
(scsi_eh.rst) requires that when a reset handler returns SUCCESS the driver
has made lower layers "forget about timed out scmds" and is ready for new
commands. Every other SCSI LLD (virtio_scsi, mpt3sas, ipr, scsi_debug,
mpi3mr) enforces this by draining or completing outstanding commands before
returning SUCCESS.

Because tcm_loop_target_reset() doesn't drain, the SCSI EH reuses in-flight
scsi_cmnd structures for recovery commands (e.g. TUR) while the target core
still has async completion work queued for the old se_cmd. The memset in
queuecommand zeroes se_lun and lun_ref_active, causing
transport_lun_remove_cmd() to skip its percpu_ref_put(). The leaked LUN
reference prevents transport_clear_lun_ref() from completing, hanging
configfs LUN unlink forever in D-state:

INFO: task rm:264 blocked for more than 122 seconds.
rm D 0 264 258 0x00004000
Call Trace:
__schedule+0x3d0/0x8e0
schedule+0x36/0xf0
transport_clear_lun_ref+0x78/0x90 [target_core_mod]
core_tpg_remove_lun+0x28/0xb0 [target_core_mod]
target_fabric_port_unlink+0x50/0x60 [target_core_mod]
configfs_unlink+0x156/0x1f0 [configfs]
vfs_unlink+0x109/0x290
do_unlinkat+0x1d5/0x2d0

Fix this by making tcm_loop_target_reset() actually drain commands:

1. Issue TMR_LUN_RESET via tcm_loop_issue_tmr() to drain all commands that
the target core knows about (those not yet CMD_T_COMPLETE).

2. Use blk_mq_tagset_busy_iter() to iterate all started requests and
flush_work() on each se_cmd — this drains any deferred completion work
for commands that already had CMD_T_COMPLETE set before the TMR (which
the TMR skips via __target_check_io_state()). This is the same pattern
used by mpi3mr, scsi_debug, and libsas to drain outstanding commands
during reset.

Publication Date May 2, 2026, 12:16 a.m.
Registration Date May 2, 2026, 4:07 a.m.
Last Update May 8, 2026, 3:28 a.m.
Affected software configurations
Configuration1 or higher or less more than less than
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.13 5.15.203
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 6.1.168
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 6.6.134
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 6.12.81
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 6.18.22
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 6.19.12
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
Related information, measures and tools
Common Vulnerabilities List