Linux vulnerability

In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() If an exiting non-autoreaping task has already passed exit_notify() and calls handle_posix_cpu_timers() from IRQ, it can be reaped by its parent or debugger right after unlock_task_sighand(). If a concurrent posix_cpu_timer_del() runs at that moment, it won't be able to detect timer->it.cpu.firing != 0: cpu_timer_task_rcu() and/or lock_task_sighand() will fail. Add the tsk->exit_state check into run_posix_cpu_timers() to fix this. This fix is not needed if CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y, because exit_task_work() is called before exit_notify(). But the check still makes sense, task_work_add(&tsk->posix_cputimers_work.work) will fail anyway in this case.

Published 22 Jul 2025Updated 8 Sep 202614 sources
CVSS 7.8 ✓ VERIFIED REFERENCE△ CISA KEV

What happened

In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() If an exiting non-autoreaping task has already passed exit_notify() and calls handle_posix_cpu_timers() from IRQ, it can be reaped by its parent or debugger right after unlock_task_sighand(). If a concurrent posix_cpu_timer_del() runs at that moment, it won't be able to detect timer->it.cpu.firing != 0: cpu_timer_task_rcu() and/or lock_task_sighand() will fail. Add the tsk->exit_state check into run_posix_cpu_timers() to fix this. This fix is not needed if CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y, because exit_task_work() is called before exit_notify(). But the check still makes sense, task_work_add(&tsk->posix_cputimers_work.work) will fail anyway in this case.

Affected versions

Linux: 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before 78a4b8e3795b31dae58762bc091bb0f4f74a2200 (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before c076635b3a42771ace7d276de8dc3bc76ee2ba1b (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before 2f3daa04a9328220de46f0d5c919a6c0073a9f0b (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before 764a7a5dfda23f69919441f2eac2a83e7db6e5bb (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before 2c72fe18cc5f9f1750f5bc148cf1c94c29e106ff (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before c29d5318708e67ac13c1b6fc1007d179fb65b4d7 (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before 460188bc042a3f40f72d34b9f7fc6ee66b0b757b (git); 0bdd2ed4138ec04e09b4f8165981efc99e439f55 through before f90fff1e152dedf52b932240ebbd670d83330eca (git); 2.6.36 Fixed: See vendor advisory.

Why it matters

Review the vendor advisory and exposure of the affected product to determine operational impact.

Detection & mitigation

  • Apply vendor-provided updates or mitigations.
  • Review affected product exposure and access logs.

Public PoC references

RepositoryAuthorFirst seenReference
github.comNVD reference2025-07-22Verified