CVE-2024-26671

blk-mq: fix IO hang from sbitmap wakeup race

State
Published
Severity
Not scored
Published
Apr 2, 2024
Updated
Oct 15, 2026
Reserved
Feb 19, 2024

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 9525b38180e2753f0daa1a522b7767a2aa969676Affected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before ecd7744a1446eb02ccc63e493e2eb6ede4ef1e10Affected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 7610ba1319253225a9ba8a9d28d472fc883b4e2fAffected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 89e0e66682e1538aeeaa3109503473663cd24c8bAffected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 1d9c777d3e70bdc57dddf7a14a80059d65919e56Affected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 6d8b01624a2540336a32be91f25187a433af53a0Affected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before f1bc0d8163f8ee84a8d5affdf624cfad657df1d2Affected
  • da55f2cc78418dee88400aafbbaed19d7ac8188e to before 5266caaf5660529e3da53004b8b7174cab6374edAffected
LinuxLinux
  • 4.11Affected
  • before 4.11Not affected
  • 4.19.307 through 4.19.*Not affected
  • 5.4.269 through 5.4.*Not affected
  • 5.10.210 through 5.10.*Not affected
  • 5.15.149 through 5.15.*Not affected
  • 6.1.77 through 6.1.*Not affected
  • 6.6.16 through 6.6.*Not affected
  • 6.7.4 through 6.7.*Not affected
  • 6.8 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.