CVE-2024-26671CWE-362

CVE-2024-26671

Medium · published April 2, 2024

CVSS v3.1
4.7
EPSS
0%
Percentile
7.8
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
4.7 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00186 · 7.8th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2024-04-02T11:15Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel< 4.19.3074.19.307
linux/linux_kernel≥ 4.20, < 5.4.2695.4.269
linux/linux_kernel≥ 5.5, < 5.10.2105.10.210
linux/linux_kernel≥ 5.11, < 5.15.1495.15.149
linux/linux_kernel≥ 5.16, < 6.1.776.1.77
linux/linux_kernel≥ 6.2, < 6.7.46.7.4
debian/debian_linuxall versions—
References (20)
https://git.kernel.org/stable/c/1d9c777d3e70bdc57dddf7a14a80059d65919e56 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/5266caaf5660529e3da53004b8b7174cab6374ed · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/6d8b01624a2540336a32be91f25187a433af53a0 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/7610ba1319253225a9ba8a9d28d472fc883b4e2f · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/89e0e66682e1538aeeaa3109503473663cd24c8b · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/9525b38180e2753f0daa1a522b7767a2aa969676 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/ecd7744a1446eb02ccc63e493e2eb6ede4ef1e10 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/f1bc0d8163f8ee84a8d5affdf624cfad657df1d2 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/1d9c777d3e70bdc57dddf7a14a80059d65919e56 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/5266caaf5660529e3da53004b8b7174cab6374ed · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/6d8b01624a2540336a32be91f25187a433af53a0 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/7610ba1319253225a9ba8a9d28d472fc883b4e2f · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/89e0e66682e1538aeeaa3109503473663cd24c8b · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/9525b38180e2753f0daa1a522b7767a2aa969676 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/ecd7744a1446eb02ccc63e493e2eb6ede4ef1e10 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/f1bc0d8163f8ee84a8d5affdf624cfad657df1d2 · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html · af854a3a-2127-422b-91ae-364da2661108https://cert-portal.siemens.com/productcert/html/ssa-398330.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5ehttps://cert-portal.siemens.com/productcert/html/ssa-613116.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5e
EPSS history
Timeline
  • 02 APR 06:49Z
    blk-mq: fix IO hang from sbitmap wakeup race
    cvelistv5