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.
Metrics
Affected Vendors & Products
Source | ID | Title |
---|---|---|
![]() |
DLA-4327-1 | linux security update |
![]() |
DLA-4328-1 | linux-6.1 security update |
![]() |
DSA-5973-1 | linux security update |
![]() |
EUVD-2025-22297 | 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. |
![]() |
USN-7769-1 | Linux kernel vulnerabilities |
![]() |
USN-7769-2 | Linux kernel (Real-time) vulnerabilities |
![]() |
USN-7769-3 | Linux kernel vulnerabilities |
![]() |
USN-7770-1 | Linux kernel (Azure) vulnerabilities |
![]() |
USN-7771-1 | Linux kernel (OEM) vulnerabilities |
![]() |
USN-7774-1 | Linux kernel vulnerabilities |
![]() |
USN-7774-2 | Linux kernel (FIPS) vulnerabilities |
![]() |
USN-7774-3 | Linux kernel (Real-time) vulnerabilities |
![]() |
USN-7775-1 | Linux kernel (Azure FIPS) vulnerabilities |
![]() |
USN-7775-2 | Linux kernel (Azure) vulnerabilities |
![]() |
USN-7776-1 | Linux kernel (Oracle) vulnerabilities |
![]() |
USN-7775-3 | Linux kernel (Azure) vulnerabilities |
![]() |
USN-7774-4 | Linux kernel (KVM) vulnerabilities |
![]() |
USN-7789-1 | Linux kernel (Oracle) vulnerabilities |
![]() |
USN-7774-5 | Linux kernel (NVIDIA Tegra IGX) vulnerabilities |
![]() |
USN-7789-2 | Linux kernel (Raspberry Pi) vulnerabilities |
Solution
No solution given by the vendor.
Workaround
No workaround given by the vendor.
Fri, 05 Sep 2025 14:30:00 +0000
Type | Values Removed | Values Added |
---|---|---|
CPEs | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.16:rc1:*:*:*:*:*:* |
Thu, 04 Sep 2025 22:15:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Metrics |
ssvc
|
ssvc
|
Thu, 04 Sep 2025 17:30:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Metrics |
kev
|
Tue, 02 Sep 2025 21:30:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Weaknesses | CWE-362 |
Tue, 02 Sep 2025 21:15:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Weaknesses | CWE-367 |
Tue, 02 Sep 2025 20:15:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Weaknesses | CWE-362 | |
Metrics |
cvssV3_1
|
ssvc
|
Tue, 29 Jul 2025 12:30:00 +0000
Type | Values Removed | Values Added |
---|---|---|
References |
| |
Metrics |
threat_severity
|
cvssV3_1
|
Wed, 23 Jul 2025 20:30:00 +0000
Type | Values Removed | Values Added |
---|---|---|
First Time appeared |
Linux
Linux linux Kernel |
|
Vendors & Products |
Linux
Linux linux Kernel |
Tue, 22 Jul 2025 08:15:00 +0000
Type | Values Removed | Values Added |
---|---|---|
Description | 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. | |
Title | posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() | |
References |
|
|

Status: PUBLISHED
Assigner: Linux
Published:
Updated: 2025-09-05T03:55:31.046Z
Reserved: 2025-04-16T04:51:24.006Z
Link: CVE-2025-38352

Updated: 2025-09-02T18:20:34.530Z

Status : Analyzed
Published: 2025-07-22T08:15:23.577
Modified: 2025-09-05T14:18:52.123
Link: CVE-2025-38352


Updated: 2025-07-23T20:19:28Z