CVE-2024-26671

blk-mq: fix IO hang from sbitmap wakeup race

MEDIUM
4.7
CVSS Score
Published: April 2, 2024 at 06:49 AM UTC
Updated: October 15, 2026 at 01:17 AM UTC
2 products affected across 2 vendorsLinux KernelDebian Linux

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM4.7
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: blk-mq: fix IO hang from sbitmap wakeup race In blk_mq_mark_tag_wait(), __add_wait_queue() may be re-ordered with the following blk_mq_get_driver_tag() in case of getting driver tag failure. Then in __sbitmap_queue_wake_up(), waitqueue_active() may not observe the added waiter in blk_mq_mark_tag_wait() and wake up nothing, meantime blk_mq_mark_tag_wait() can't get driver tag successfully. This issue can be reproduced by running the following test in loop, and fio hang can be observed in < 30min when running it on my test VM in laptop. modprobe -r scsi_debug modprobe scsi_debug delay=0 dev_size_mb=4096 max_queue=1 host_max_queue=1 submit_queues=4 dev=`ls -d /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/*/block/* | head -1 | xargs basename` fio --filename=/dev/"$dev" --direct=1 --rw=randrw --bs=4k --iodepth=1 \ --runtime=100 --numjobs=40 --time_based --name=test \ --ioengine=libaio Fix the issue by adding one explicit barrier in blk_mq_mark_tag_wait(), which is just fine in case of running out of tag.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v < 4.19.3074.20 ≤ v < 5.4.2695.11 ≤ v < 5.15.1495.16 ≤ v < 6.1.775.5 ≤ v < 5.10.2106.2 ≤ v < 6.7.44.11da55f2cc78418dee88400aafbbaed19d7ac8188e
Vendor states this is fixed in 1d9c777d3e70bdc57dddf7a14a80059d65919e56 (fixed)
Vendor states this is fixed in 5266caaf5660529e3da53004b8b7174cab6374ed (fixed)
Vendor states this is fixed in 6d8b01624a2540336a32be91f25187a433af53a0 (fixed)
Vendor states this is fixed in 7610ba1319253225a9ba8a9d28d472fc883b4e2f (fixed)
Vendor states this is fixed in 89e0e66682e1538aeeaa3109503473663cd24c8b (fixed)
Vendor states this is fixed in 9525b38180e2753f0daa1a522b7767a2aa969676 (fixed)
Vendor states this is fixed in ecd7744a1446eb02ccc63e493e2eb6ede4ef1e10 (fixed)
Vendor states this is fixed in f1bc0d8163f8ee84a8d5affdf624cfad657df1d2 (fixed)
Vendor states this is fixed in 4.11 (unaffected)
Vendor states this is fixed in 4.19.307 (unaffected)
Vendor states this is fixed in 5.10.210 (unaffected)
Vendor states this is fixed in 5.15.149 (unaffected)
Vendor states this is fixed in 5.4.269 (unaffected)
Vendor states this is fixed in 6.1.77 (unaffected)
Vendor states this is fixed in 6.6.16 (unaffected)
Vendor states this is fixed in 6.7.4 (unaffected)
Vendor states this is fixed in 6.8 (unaffected)

References (12)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/1d9c777d3e70bdc57dddf7a14a80059d65919e56
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/5266caaf5660529e3da53004b8b7174cab6374ed
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/6d8b01624a2540336a32be91f25187a433af53a0
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/7610ba1319253225a9ba8a9d28d472fc883b4e2f
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/89e0e66682e1538aeeaa3109503473663cd24c8b
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/9525b38180e2753f0daa1a522b7767a2aa969676
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/ecd7744a1446eb02ccc63e493e2eb6ede4ef1e10
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/f1bc0d8163f8ee84a8d5affdf624cfad657df1d2

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
HIGH
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-362

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card