CVE-2024-36908

blk-iocost: do not WARN if iocg was already offlined

High · published May 30, 2024

CVSS v3.1
7.1
EPSS
0%
Percentile
15.2
In the wild
Unconfirmed
What it is

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

blk-iocost: do not WARN if iocg was already offlined

In iocg_pay_debt(), warn is triggered if 'active_list' is empty, which

is intended to confirm iocg is active when it has debt. However, warn

can be triggered during a blkcg or disk removal, if iocg_waitq_timer_fn()

is run at that time:

WARNING: CPU: 0 PID: 2344971 at block/blk-iocost.c:1402 iocg_pay_debt+0x14c/0x190

Call trace:

iocg_pay_debt+0x14c/0x190

iocg_kick_waitq+0x438/0x4c0

iocg_waitq_timer_fn+0xd8/0x130

__run_hrtimer+0x144/0x45c

__hrtimer_run_queues+0x16c/0x244

hrtimer_interrupt+0x2cc/0x7b0

The warn in this situation is meaningless. Since this iocg is being

removed, the state of the 'active_list' is irrelevant, and 'waitq_timer'

is canceled after removing 'active_list' in ioc_pd_free(), which ensures

iocg is freed after iocg_waitq_timer_fn() returns.

Therefore, add the check if iocg was already offlined to avoid warn

when removing a blkcg or disk.

The record
Technical detail
CVSS v3.1
7.1 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00249 · 15.2th percentile
Published
2024-05-30T15:29Z
EPSS history
Timeline
  • 30 MAY 15:29Z
    blk-iocost: do not WARN if iocg was already offlined
    cvelistv5