Unfreezable pid namespace teardown blocks Linux kernel suspend
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- —
- Confidentiality · integrity · availability
- —
- Fix status
- Fixed
No CVSS vector from any source. Fix status from CNA.
Summary
In the Linux kernel, versions from 2.6.24 before the fixed releases are affected. When the init process of a pid namespace exits, zap_pid_ns_processes() waits for other pids in the namespace to be freed, and a tracer outside the namespace that does not reap its traced zombies can keep that wait unbounded. Neither wait is freezable, so the wait blocks system suspend. A local user who can trace processes in a pid namespace can trigger this condition.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
In the Linux kernel, the following vulnerability has been resolved: pid_namespace: make zap_pid_ns_processes() freezable When the init of a pid namespace exits, zap_pid_ns_processes() waits until all other pids in the namespace are freed. A tracer outside the namespace that does not reap its traced zombies keeps those pids allocated, so this wait has no upper bound, and while it lasts every suspend attempt fails: Freezing user space processes failed after 20.006 seconds (2 tasks refusing to freeze, wq_busy=0): Neither wait is freezable. The first loop sleeps in do_wait(), which returns -ERESTARTSYS on the freezer's fake signal; the loop then clears TIF_SIGPENDING and waits again without ever freezing. The final loop sleeps in TASK_INTERRUPTIBLE, and since nothing clears TIF_SIGPENDING there, schedule() returns immediately after the first freeze attempt and the task spins until the wait ends. Sleep in TASK_INTERRUPTIBLE | TASK_FREEZABLE in do_wait(), so that the freezer can freeze tasks waiting there directly, and in TASK_IDLE | TASK_FREEZABLE in the final loop, like coredump_task_exit() does. This was hit with Chromium-based browsers: crashpad ptrace-attaches the threads of a crashed renderer, which is a pid namespace init, and does not reap those killed during the dump.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
Remediation
Fixed versions are 6.1.191, 6.6.161, 6.12.115, 6.18.59, 7.2.13 and 7.3 for the Linux kernel. The sources list no fixed version for Linux beyond these release branches.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA Linux (Linux) Fixed in 6.1.191, 6.6.161, 6.12.115, 6.18.59, 7.2.13, 7.3
Timeline
- 2026-11-03 Threatist record created from CVE-2026-99249
- 2026-11-03 Alias added: GHSA-mgg4-g6ph-qf96
References
Other 6
- https://git.kernel.org/stable/c/064a6761d6f6ac55d090d3eaca649577ee736713
- https://git.kernel.org/stable/c/e8dafad7de9ede813af2d48cc04b7c88fef16682
- https://git.kernel.org/stable/c/4b47107f1a80c809c80093e872bcaccdbae13db4
- https://git.kernel.org/stable/c/2e10b8a74f55b5aae33db105d3e2d3ae759c865a
- https://git.kernel.org/stable/c/7deb5770840339fe88755bf27b92f74edc26ee87
- https://git.kernel.org/stable/c/81933038f5e273d17ed22792f906889393b204c5
More Linux vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
Sources
- CVE-2026-99249 · CVE Program
- CVE-2026-99249 · NVD
- FIRST EPSS
- GHSA-mgg4-g6ph-qf96 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences