CVE-2022-49193 Information
Description
In the Linux kernel the following vulnerability has been resolved:
ice: fix ‘scheduling while atomic’ on aux critical err interrupt
There’s a kernel BUG splat on processing aux critical error interrupts in ice_misc_intr():
[ 2100.917085] BUG: scheduling while atomic: swapper/15/0/0x00010000
…
[ 2101.060770] Call Trace:
[ 2101.063229]
As Andrew correctly mentioned previously[0] the following call ladder happens:
ice_misc_intr() <- hardirq ice_send_event_to_aux() device_lock() mutex_lock() might_sleep() might_resched() <- oops
Add a new PF state bit which indicates that an aux critical error occurred and serve it in ice_service_task() in process context. The new ice_pf::oicr_err_reg is read-write in both hardirq and process contexts but only 3 bits of non-critical data probably aren’t worth explicit synchronizing (and they’re even in the same byte [31:24]).
[0] https://lore.kernel.org/all/YeSRUVmrdmlUXHDn@lunn.ch
Reference
https://git.kernel.org/stable/c/24d7ac8426306ae7ccea7f7dd612a7368fe7201d https://git.kernel.org/stable/c/32d53c0aa3a7b727243473949bad2a830b908edc https://git.kernel.org/stable/c/59e88a50afad7469c55804e46bf2924b9130281f https://git.kernel.org/stable/c/9b77c8cf69a41d1e3851370aeaa04a9ea83b865c
Share on: