Descripción
In the Linux kernel, following vulnerability has been resolved:
powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore
The needs rw_sempahore, sleeping lock, because
the code calls kmalloc() while holding it, which can sleep:
# echo 1 > /proc/powerpc/vcpudispatch_stats
BUG: function called from invalid context at include/linux/sched/mm.h:337
in_atomic(): 1, irqs_disabled(): 0, non_block: pid: 199, name: sh
preempt_count: 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}, vcpudispatch_stats_write+0xd4/0x5f4
#2: c0000000028c70b8 (dtl_access_lock){+.+.}-{2:2}, vcpudispatch_stats_write+0x220/0x5f4
CPU: 0 PID: 199 Comm: sh Not tainted 6.10.0-rc4 #152
Hardware IBM pSeries (emulated 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
https://git.kernel.org/stable/c/525e18f1ba7c2b098c8ba587fb397efb34a6574c
https://git.kernel.org/stable/c/6956c0e7346ce1bbfc726755aa8da10d26e84276
https://git.kernel.org/stable/c/a246daa26b717e755ccc9061f47f7cd1c0b358dd
https://git.kernel.org/stable/c/b125d0cf1adde7b2b47d7337fed7e9133eea3463
https://git.kernel.org/stable/c/cadae3a45d23aa4f6485938a67cbc47aaaa25e38
https://git.kernel.org/stable/c/f6ec133668757f84e5143f1eb141fd0b83778b9e
https://git.kernel.org/stable/c/fa5b5ea257135e771b489c83a2e93b5935d0108e