CVE-2026-53352: signal: clear JOBCTL_PENDING_MASK for caller in zap_other_threads()
In the Linux kernel, the following vulnerability has been resolved:
signal: clear JOBCTLPENDINGMASK for caller in zapotherthreads()
When a multi-threaded process receives a stop signal (e.g., SIGSTOP), dosignalstop() sets JOBCTLSTOPPENDING and JOBCTLSTOPCONSUME on all threads and sets signal->groupstopcount to the number of threads. If one of the threads concurrently calls execve(), dethread() invokes zapotherthreads() to kill all other threads. zapotherthreads() aborts the pending group stop by resetting signal->groupstopcount to 0 and clears the JOBCTLPENDINGMASK for all other threads. However, it fails to clear the job control flags for the calling thread.
When execve() completes, the calling thread returns to user mode and checks for pending signals. Seeing the stale JOBCTLSTOPPENDING flag, it calls dosignalstop(), which invokes taskparticipategroupstop(). Since JOBCTLSTOPCONSUME is still set, it attempts to decrement the already-zero signal->groupstopcount, triggering a warning:
sig->groupstopcount == 0 WARNING: CPU: 1 PID: 6475 at kernel/signal.c:373 taskparticipategroupstop+0x215/0x2d0 Call Trace: <TASK> dosignalstop+0x3be/0x5c0 kernel/signal.c:2619 getsignal+0xa8c/0x1330 kernel/signal.c:2884 archdosignalorrestart+0xbc/0x840 arch/x86/kernel/signal.c:337 exittousermodeloop+0x8c/0x4d0 kernel/entry/common.c:98 dosyscall64+0x33e/0xf80 arch/x86/entry/syscall64.c:100 entrySYSCALL64afterhwframe+0x77/0x7f </TASK>
Fix this race condition by clearing the JOBCTLPENDINGMASK for the calling thread in zapotherthreads(), ensuring it does not retain any stale job control state after the thread group is destroyed. This aligns with other functions that tear down a thread group and abort group stops, such as zapprocess() and completesignal(), which correctly clear these flags for all threads including the current one.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.143.1-1 - Configuration
Ensure the implementation clears JOBCTL_PENDING_MASK for all threads in the thread group, including fixing the case where it fails to clear the job control flags for the calling thread (i.e., clear flags for all threads including the current thread).
Linux kernel signal/job control (zap_other_threads / clear JOBCTL_PENDING_MASK) JOBCTL_PENDING_MASK = cleared for all other threads (including current one if applicable)
Event History
Frequently Asked Questions
What is the severity of CVE-2026-53352?
CVE-2026-53352 has a risk rating of 12, indicating it is a serious vulnerability.
How does CVE-2026-53352 affect the Linux Kernel?
CVE-2026-53352 affects multi-threaded processes in the Linux Kernel, particularly during the handling of stop signals.
How can I mitigate CVE-2026-53352?
Mitigation for CVE-2026-53352 involves updating to the patched version of the Linux Kernel that resolves this vulnerability.
Who is affected by CVE-2026-53352?
Any user or organization running vulnerable versions of the Linux Kernel in multi-threaded environments may be affected by CVE-2026-53352.
What type of vulnerability is CVE-2026-53352?
CVE-2026-53352 is classified as a race condition vulnerability within the Linux Kernel.