CVE-2022-49902

block: Fix possible memory leak for rq_wb on add_disk failure

Medium · published May 1, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
9.2
In the wild
Unconfirmed
What it is

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

block: Fix possible memory leak for rq_wb on add_disk failure

kmemleak reported memory leaks in device_add_disk():

kmemleak: 3 new suspected memory leaks

unreferenced object 0xffff88800f420800 (size 512):

comm "modprobe", pid 4275, jiffies 4295639067 (age 223.512s)

hex dump (first 32 bytes):

04 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 ................

00 e1 f5 05 00 00 00 00 00 00 00 00 00 00 00 00 ................

backtrace:

[<00000000d3662699>] kmalloc_trace+0x26/0x60

[<00000000edc7aadc>] wbt_init+0x50/0x6f0

[<0000000069601d16>] wbt_enable_default+0x157/0x1c0

[<0000000028fc393f>] blk_register_queue+0x2a4/0x420

[<000000007345a042>] device_add_disk+0x6fd/0xe40

[<0000000060e6aab0>] nbd_dev_add+0x828/0xbf0 [nbd]

...

It is because the memory allocated in wbt_enable_default() is not

released in device_add_disk() error path.

Normally, these memory are freed in:

del_gendisk()

rq_qos_exit()

rqos->ops->exit(rqos);

wbt_exit()

So rq_qos_exit() is called to free the rq_wb memory for wbt_init().

However in the error path of device_add_disk(), only

blk_unregister_queue() is called and make rq_wb memory leaked.

Add rq_qos_exit() to the error path to fix it.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00199 · 9.2th percentile
Published
2025-05-01T14:10Z
EPSS history
Timeline
  • 01 MAY 14:10Z
    block: Fix possible memory leak for rq_wb on add_disk failure
    cvelistv5