CVE-2024-58090·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: sched/core: Prevent rescheduling when interrupts are disabled David reported a warning observed while loop testing kexec jump: Interrupts enabled after irqrouter_resume+0x0/0x50 WARNING: CPU: 0 PID: 560 at drivers/base/syscore.c:103 syscore_resume+0x18a/0x220 kernel_kexec+0xf6/0x180 __do_sys_reboot+0x206/0x250 do_syscall_64+0x95/0x180 The corresponding interrupt flag trace: hardirqs last enabled at (15573): [<ffffffffa8281b8e>] __up_console_sem+0x7e/0x90 hardirqs last disabled at (15580): [<ffffffffa8281b73>] __up_console_sem+0x63/0x90 That means __up_console_sem() was invoked with interrupts enabled. Further instrumentation revealed that in the interrupt disabled section of kexec jump one of the syscore_suspend() callbacks woke up a task, which set the NEED_RESCHED flag. A later callback in the resume path invoked cond_resched() which in turn led to the invocation of the scheduler: __cond_resched+0x21/0x60 down_timeout+0x18/0x60 acpi_os_wait_semaphore+0x4c/0x80 acpi_ut_acquire_mutex+0x3d/0x100 acpi_ns_get_node+0x27/0x60 acpi_ns_evaluate+0x1cb/0x2d0 acpi_rs_set_srs_method_data+0x156/0x190 acpi_pci_link_set+0x11c/0x290 irqrouter_resume+0x54/0x60 syscore_resume+0x6a/0x200 kernel_kexec+0x145/0x1c0 __do_sys_reboot+0xeb/0x240 do_syscall_64+0x95/0x180 This is a long standing problem, which probably got more visible with the recent printk changes. Something does a task wakeup and the scheduler sets the NEED_RESCHED flag. cond_resched() sees it set and invokes schedule() from a completely bogus context. The scheduler enables interrupts after context switching, which causes the above warning at the end. Quite some of the code paths in syscore_suspend()/resume() can result in triggering a wakeup with the exactly same consequences. They might not have done so yet, but as they share a lot of code with normal operations it's just a question of time. The problem only affects the PREEMPT_NONE and PREEMPT_VOLUNTARY scheduling models. Full preemption is not affected as cond_resched() is disabled and the preemption check preemptible() takes the interrupt disabled flag into account. Cure the problem by adding a corresponding check into cond_resched().
- Severity
- medium
- Software
- Kernel
- Fixed in
- 6.13.6
- Published
- 2025-03-27
Affected versions
From: 6.13
Until: 6.13.6
Fixed in: 6.13.6
How to fix this CVE
Update your Linux kernel to version 6.13.6 or later to resolve a scheduler bug that allows task wakeups to trigger premature context switches while interrupts are disabled. This issue primarily affects systems using PREEMPT_NONE or PREEMPT_VOLUNTARY scheduling models and can cause system instability during kexec operations or syscore suspend/resume cycles.
sudo dnf update kernel kernel-headers kernel-develDefensia detects this vulnerability
How to check if you are affected
- Check installed kernel version: uname -r
- Compare against affected range: If output is between 6.13 and 6.13.6 (exclusive), the system is vulnerable
- Review kernel logs for IRQ warnings: grep -i 'interrupts enabled after' /var/log/kern.log or journalctl -k | grep -i 'interrupts enabled'
- Verify fix by checking kernel version matches 6.13.6 or newer: uname -r | grep -E '6\.1[3-9]\.[6-9]|6\.[2-9][0-9]\.|[7-9]\.' || echo 'Kernel needs update'
FAQ
What is CVE-2024-58090?
CVE-2024-58090 is a kernel scheduler vulnerability where task wakeups during interrupt-disabled sections can cause the scheduler to execute with interrupts disabled, leading to system warnings and potential instability during critical operations like kexec or power management transitions.
Is CVE-2024-58090 being actively exploited?
No, this vulnerability is not actively exploited in the wild and no public exploits are available. However, it can be triggered through legitimate system operations like kexec jumps or ACPI suspend/resume cycles.
What versions of Kernel are affected by CVE-2024-58090?
Linux kernel versions 6.13 through 6.13.5 are affected. The vulnerability is fixed in kernel 6.13.6 and later releases.
How do I check if my server is vulnerable to CVE-2024-58090?
Run 'uname -r' and verify the kernel version. If it shows 6.13.0 through 6.13.5, your system is vulnerable. Systems running kernel 6.13.6 or later, or versions prior to 6.13, are not affected.
Does Defensia detect CVE-2024-58090?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Kernel is installed on a monitored server, CVE-2024-58090 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/0362847c520747b44b574d363705d8af0621727a
- https://git.kernel.org/stable/c/1651f5731b378616565534eb9cda30e258cebebc
- https://git.kernel.org/stable/c/288fdb8dcb71ec77b76ab8b8a06bc10f595ea504
- https://git.kernel.org/stable/c/321794b75ac968f0bb6b9c913581949452a8d992
- https://git.kernel.org/stable/c/68786ab0935ccd5721283b7eb7f4d2f2942c7a52
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-58090. Free for 1 server.
Get started free