CVE-2024-53089: LoongArch: KVM: Mark hrtimer to expire in hard interrupt context
In the Linux kernel, the following vulnerability has been resolved:
LoongArch: KVM: Mark hrtimer to expire in hard interrupt context
Like commit 2c0d278f3293f ("KVM: LAPIC: Mark hrtimer to expire in hard interrupt context") and commit 9090825fa9974 ("KVM: arm/arm64: Let the timer expire in hardirq context on RT"), On PREEMPTRT enabled kernels unmarked hrtimers are moved into soft interrupt expiry mode by default. Then the timers are canceled from an preempt-notifier which is invoked with disabled preemption which is not allowed on PREEMPTRT.
The timer callback is short so in could be invoked in hard-IRQ context. So let the timer expire on hard-IRQ context even on -RT.
This fix a "scheduling while atomic" bug for PREEMPTRT enabled kernels:
BUG: scheduling while atomic: qemu-system-loo/1011/0x00000002 Modules linked in: amdgpu rfkill nftfibinet nftfibipv4 nftfibipv6 nftfib nftrejectinet nfrejectipv4 nfrejectipv6 nftreject nftct nftchainnat ns CPU: 1 UID: 0 PID: 1011 Comm: qemu-system-loo Tainted: G W 6.12.0-rc2+ #1774 Tainted: [W]=WARN Hardware name: Loongson Loongson-3A5000-7A1000-1w-CRB/Loongson-LS3A5000-7A1000-1w-CRB, BIOS vUDK2018-LoongArch-V2.0.0-prebeta9 10/21/2022 Stack : ffffffffffffffff 0000000000000000 9000000004e3ea38 9000000116744000 90000001167475a0 0000000000000000 90000001167475a8 9000000005644830 90000000058dc000 90000000058dbff8 9000000116747420 0000000000000001 0000000000000001 6a613fc938313980 000000000790c000 90000001001c1140 00000000000003fe 0000000000000001 000000000000000d 0000000000000003 0000000000000030 00000000000003f3 000000000790c000 9000000116747830 90000000057ef000 0000000000000000 9000000005644830 0000000000000004 0000000000000000 90000000057f4b58 0000000000000001 9000000116747868 900000000451b600 9000000005644830 9000000003a13998 0000000010000020 00000000000000b0 0000000000000004 0000000000000000 0000000000071c1d ... Call Trace: [<9000000003a13998>] showstack+0x38/0x180 [<9000000004e3ea34>] dumpstacklvl+0x84/0xc0 [<9000000003a71708>] schedulebug+0x48/0x60 [<9000000004e45734>] schedule+0x1114/0x1660 [<9000000004e46040>] schedulertlock+0x20/0x60 [<9000000004e4e330>] rtlockslowlocklocked+0x3f0/0x10a0 [<9000000004e4f038>] rtspinlock+0x58/0x80 [<9000000003b02d68>] hrtimercancelwaitrunning+0x68/0xc0 [<9000000003b02e30>] hrtimercancel+0x70/0x80 [<ffff80000235eb70>] kvmrestoretimer+0x50/0x1a0 [kvm] [<ffff8000023616c8>] kvmarchvcpuload+0x68/0x2a0 [kvm] [<ffff80000234c2d4>] kvmschedin+0x34/0x60 [kvm] [<9000000003a749a0>] finishtaskswitch.isra.0+0x140/0x2e0 [<9000000004e44a70>] schedule+0x450/0x1660 [<9000000004e45cb0>] schedule+0x30/0x180 [<ffff800002354c70>] kvmvcpublock+0x70/0x120 [kvm] [<ffff800002354d80>] kvmvcpuhalt+0x60/0x3e0 [kvm] [<ffff80000235b194>] kvmhandlegspr+0x3f4/0x4e0 [kvm] [<ffff80000235f548>] kvmhandleexit+0x1c8/0x260 [kvm]
Other sources
This CVE was automatically created from a reference found in an email or other text. If you are reading this, then this CVE entry is probably erroneous, since this text should be replaced by the official CVE description automatically.
— Launchpad
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2024-53089?
CVE-2024-53089 has a severity rating that may vary based on the specific context and environment, but vulnerabilities in the Linux kernel are generally considered high risk due to their potential impact.
How do I fix CVE-2024-53089?
To fix CVE-2024-53089, you should upgrade to the latest patched version of the Linux kernel above 6.11.9 or the affected 6.12 release candidates.
Which versions of the Linux kernel are affected by CVE-2024-53089?
CVE-2024-53089 affects Linux kernel versions up to 6.11.9 and the release candidates 6.12-rc1 through 6.12-rc4.
Is CVE-2024-53089 a local or remote vulnerability?
CVE-2024-53089 is a local vulnerability, as it requires local access to the affected system for exploitation.
What type of vulnerability is CVE-2024-53089?
CVE-2024-53089 is an issue within the Linux kernel related to the handling of hrtimer in hard interrupt context.