CVE Catalog

CVE-2026-90305

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel on ARM, PREEMPT_RT was enabled without selecting HAVE_POSIX_CPU_TIMERS_TASK_WORK, leaving CONFIG_POSIX_CPU_TIMERS_TASK_WORK disabled so CPU timers expired in hard IRQ context. On PREEMPT_RT this made run_posix_cpu_timers() take the sleeping sighand->siglock, triggering a "sleeping function called from invalid context" bug. The fix selects the option to defer POSIX CPU timer expiry to task context.

Risk Assessment

This can cause kernel bugs and system instability on ARM platforms with PREEMPT_RT, especially when using setrlimit(RLIMIT_CPU), setitimer, or timer_create().

Recommendation

Update the Linux kernel to a version containing the ARM 9483/1 fix. Verify PREEMPT_RT configuration on ARM systems.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: ARM: 9483/1: select HAVE_POSIX_CPU_TIMERS_TASK_WORK Commit c6e61c06d606 ("ARM: 9463/1: Allow to enable RT") enabled PREEMPT_RT on ARM but did not select HAVE_POSIX_CPU_TIMERS_TASK_WORK. This leaves CONFIG_POSIX_CPU_TIMERS_TASK_WORK disabled, so CPU timers expire in hard IRQ context. On PREEMPT_RT this makes run_posix_cpu_timers() take the sleeping sighand->siglock: BUG: sleeping function called from invalid context at spinlock_rt.c:48 rt_spin_lock from lock_task_sighand lock_task_sighand from run_posix_cpu_timers run_posix_cpu_timers from update_process_times ARM handles TIF_NOTIFY_RESUME on all return-to-user paths, including v7-M. ARM32 KVM host support was removed by commit 541ad0150ca4 ("arm: Remove 32bit KVM host support"), so the select need not be conditional on KVM. Select it to defer POSIX CPU timer expiry to task context. Reproduced with setrlimit(RLIMIT_CPU, ...) and a busy loop. The same path is used by setitimer(ITIMER_PROF or ITIMER_VIRTUAL) and POSIX CPU timers created with timer_create().

Vulnerability data from NVD (NIST) · CISA KEV · EPSS