CVE-2024-38598

CVSS v3.1 5.5 (Medium)
55% Progress
EPSS 0.04 % (5th)
0.04% Progress
Affected Products 1
Advisories 30
NVD Status Analyzed

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

md: fix resync softlockup when bitmap size is less than array size

Is is reported that for dm-raid10, lvextend + lvchange --syncaction will
trigger following softlockup:

kernel:watchdog: BUG: soft lockup - CPU#3 stuck for 26s! [mdX_resync:6976]
CPU: 7 PID: 3588 Comm: mdX_resync Kdump: loaded Not tainted 6.9.0-rc4-next-20240419 #1
RIP: 0010:_raw_spin_unlock_irq+0x13/0x30
Call Trace:
<TASK>
md_bitmap_start_sync+0x6b/0xf0
raid10_sync_request+0x25c/0x1b40 [raid10]
md_do_sync+0x64b/0x1020
md_thread+0xa7/0x170
kthread+0xcf/0x100
ret_from_fork+0x30/0x50
ret_from_fork_asm+0x1a/0x30

And the detailed process is as follows:

md_do_sync
j = mddev->resync_min
while (j < max_sectors)
sectors = raid10_sync_request(mddev, j, &skipped)
if (!md_bitmap_start_sync(..., &sync_blocks))
// md_bitmap_start_sync set sync_blocks to 0
return sync_blocks + sectors_skippe;
// sectors = 0;
j += sectors;
// j never change

Root cause is that commit 301867b1c168 ("md/raid10: check
slab-out-of-bounds in md_bitmap_get_counter") return early from
md_bitmap_get_counter(), without setting returned blocks.

Fix this problem by always set returned blocks from
md_bitmap_get_counter"(), as it used to be.

Noted that this patch just fix the softlockup problem in kernel, the
case that bitmap size doesn't match array size still need to be fixed.

Weaknesses
CWE-667
Improper Locking
CVE Status
PUBLISHED
NVD Status
Analyzed
CNA
kernel.org
Published Date
2024-06-19 14:15:19
(2 months ago)
Updated Date
2024-08-27 18:36:57
(2 weeks ago)

Affected Products

Loading...
Loading...
Loading...

Configuration #1

    CPE23 From Up To
  Linux Kernel from 4.19.291 version and prior 4.19.316 version cpe:2.3:o:linux:linux_kernel >= 4.19.291 < 4.19.316
  Linux Kernel from 5.4.251 version and prior 5.4.278 version cpe:2.3:o:linux:linux_kernel >= 5.4.251 < 5.4.278
  Linux Kernel from 5.10.188 version and prior 5.10.219 version cpe:2.3:o:linux:linux_kernel >= 5.10.188 < 5.10.219
  Linux Kernel from 5.15.121 version and prior 5.15.161 version cpe:2.3:o:linux:linux_kernel >= 5.15.121 < 5.15.161
  Linux Kernel from 6.1.39 version and prior 6.1.93 version cpe:2.3:o:linux:linux_kernel >= 6.1.39 < 6.1.93
  Linux Kernel from 6.5 version and prior 6.6.33 version cpe:2.3:o:linux:linux_kernel >= 6.5 < 6.6.33
  Linux Kernel from 6.7 version and prior 6.8.12 version cpe:2.3:o:linux:linux_kernel >= 6.7 < 6.8.12
  Linux Kernel from 6.9 version and prior 6.9.3 version cpe:2.3:o:linux:linux_kernel >= 6.9 < 6.9.3
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...