CyberAlerts is shutting down on June 30th, 2025. Thank you for your support!

CVE-2024-56701: powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore

Description

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

powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore

The dtl_access_lock needs to be a rw_sempahore, a sleeping lock, because
the code calls kmalloc() while holding it, which can sleep:

# echo 1 > /proc/powerpc/vcpudispatch_stats
BUG: sleeping function called from invalid context at include/linux/sched/mm.h:337
in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 199, name: sh
preempt_count: 1, expected: 0
3 locks held by sh/199:
#0: c00000000a0743f8 (sb_writers#3){.+.+}-{0:0}, at: vfs_write+0x324/0x438
#1: c0000000028c7058 (dtl_enable_mutex){+.+.}-{3:3}, at: vcpudispatch_stats_write+0xd4/0x5f4
#2: c0000000028c70b8 (dtl_access_lock){+.+.}-{2:2}, at: vcpudispatch_stats_write+0x220/0x5f4
CPU: 0 PID: 199 Comm: sh Not tainted 6.10.0-rc4 #152
Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,HEAD hv:linux,kvm pSeries
Call Trace:
dump_stack_lvl+0x130/0x148 (unreliable)
__might_resched+0x174/0x410
kmem_cache_alloc_noprof+0x340/0x3d0
alloc_dtl_buffers+0x124/0x1ac
vcpudispatch_stats_write+0x2a8/0x5f4
proc_reg_write+0xf4/0x150
vfs_write+0xfc/0x438
ksys_write+0x88/0x148
system_call_exception+0x1c4/0x5a0
system_call_common+0xf4/0x258

Classification

CVE ID: CVE-2024-56701

Affected Products

Vendor: Linux

Product: Linux

Exploit Prediction Scoring System (EPSS)

EPSS Score: 0.04% (probability of being exploited)

EPSS Percentile: 12.41% (scored less or equal to compared to others)

EPSS Date: 2025-02-04 (when was this score calculated)

References

https://git.kernel.org/stable/c/6956c0e7346ce1bbfc726755aa8da10d26e84276
https://git.kernel.org/stable/c/f6ec133668757f84e5143f1eb141fd0b83778b9e
https://git.kernel.org/stable/c/fa5b5ea257135e771b489c83a2e93b5935d0108e
https://git.kernel.org/stable/c/a246daa26b717e755ccc9061f47f7cd1c0b358dd
https://git.kernel.org/stable/c/b125d0cf1adde7b2b47d7337fed7e9133eea3463
https://git.kernel.org/stable/c/525e18f1ba7c2b098c8ba587fb397efb34a6574c
https://git.kernel.org/stable/c/cadae3a45d23aa4f6485938a67cbc47aaaa25e38

Timeline