{"api_version":"1","generated_at":"2026-11-08T23:44:15+00:00","cve":"CVE-2026-99249","urls":{"html":"https://cve.report/CVE-2026-99249","api":"https://cve.report/api/cve/CVE-2026-99249.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-99249","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-99249"},"summary":{"title":"pid_namespace: make zap_pid_ns_processes() freezable","description":"In the Linux kernel, the following vulnerability has been resolved:\n\npid_namespace: make zap_pid_ns_processes() freezable\n\nWhen the init of a pid namespace exits, zap_pid_ns_processes() waits\nuntil all other pids in the namespace are freed. A tracer outside the\nnamespace that does not reap its traced zombies keeps those pids\nallocated, so this wait has no upper bound, and while it lasts every\nsuspend attempt fails:\n\n  Freezing user space processes failed after 20.006 seconds (2 tasks refusing to freeze, wq_busy=0):\n\nNeither wait is freezable. The first loop sleeps in do_wait(), which\nreturns -ERESTARTSYS on the freezer's fake signal; the loop then clears\nTIF_SIGPENDING and waits again without ever freezing. The final loop\nsleeps in TASK_INTERRUPTIBLE, and since nothing clears TIF_SIGPENDING\nthere, schedule() returns immediately after the first freeze attempt\nand the task spins until the wait ends.\n\nSleep in TASK_INTERRUPTIBLE | TASK_FREEZABLE in do_wait(), so that the\nfreezer can freeze tasks waiting there directly, and in TASK_IDLE |\nTASK_FREEZABLE in the final loop, like coredump_task_exit() does.\n\nThis was hit with Chromium-based browsers: crashpad ptrace-attaches the\nthreads of a crashed renderer, which is a pid namespace init, and does\nnot reap those killed during the dump.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-11-03 12:17:31","updated_at":"2026-11-03 12:17:31"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/4b47107f1a80c809c80093e872bcaccdbae13db4","name":"https://git.kernel.org/stable/c/4b47107f1a80c809c80093e872bcaccdbae13db4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2e10b8a74f55b5aae33db105d3e2d3ae759c865a","name":"https://git.kernel.org/stable/c/2e10b8a74f55b5aae33db105d3e2d3ae759c865a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/81933038f5e273d17ed22792f906889393b204c5","name":"https://git.kernel.org/stable/c/81933038f5e273d17ed22792f906889393b204c5","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/064a6761d6f6ac55d090d3eaca649577ee736713","name":"https://git.kernel.org/stable/c/064a6761d6f6ac55d090d3eaca649577ee736713","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/7deb5770840339fe88755bf27b92f74edc26ee87","name":"https://git.kernel.org/stable/c/7deb5770840339fe88755bf27b92f74edc26ee87","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e8dafad7de9ede813af2d48cc04b7c88fef16682","name":"https://git.kernel.org/stable/c/e8dafad7de9ede813af2d48cc04b7c88fef16682","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-99249","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99249","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 064a6761d6f6ac55d090d3eaca649577ee736713 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 e8dafad7de9ede813af2d48cc04b7c88fef16682 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 4b47107f1a80c809c80093e872bcaccdbae13db4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 2e10b8a74f55b5aae33db105d3e2d3ae759c865a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 7deb5770840339fe88755bf27b92f74edc26ee87 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3eb07c8c8adb6f0572baba844ba2d9e501654316 81933038f5e273d17ed22792f906889393b204c5 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.24","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.24 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.191 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.161 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.115 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.59 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.13 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["kernel/exit.c","kernel/pid_namespace.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"064a6761d6f6ac55d090d3eaca649577ee736713","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"},{"lessThan":"e8dafad7de9ede813af2d48cc04b7c88fef16682","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"},{"lessThan":"4b47107f1a80c809c80093e872bcaccdbae13db4","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"},{"lessThan":"2e10b8a74f55b5aae33db105d3e2d3ae759c865a","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"},{"lessThan":"7deb5770840339fe88755bf27b92f74edc26ee87","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"},{"lessThan":"81933038f5e273d17ed22792f906889393b204c5","status":"affected","version":"3eb07c8c8adb6f0572baba844ba2d9e501654316","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["kernel/exit.c","kernel/pid_namespace.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.24"},{"lessThan":"2.6.24","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.191","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.161","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.115","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.59","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.13","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.191","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.161","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.115","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.59","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.13","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3","versionStartIncluding":"2.6.24","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\npid_namespace: make zap_pid_ns_processes() freezable\n\nWhen the init of a pid namespace exits, zap_pid_ns_processes() waits\nuntil all other pids in the namespace are freed. A tracer outside the\nnamespace that does not reap its traced zombies keeps those pids\nallocated, so this wait has no upper bound, and while it lasts every\nsuspend attempt fails:\n\n  Freezing user space processes failed after 20.006 seconds (2 tasks refusing to freeze, wq_busy=0):\n\nNeither wait is freezable. The first loop sleeps in do_wait(), which\nreturns -ERESTARTSYS on the freezer's fake signal; the loop then clears\nTIF_SIGPENDING and waits again without ever freezing. The final loop\nsleeps in TASK_INTERRUPTIBLE, and since nothing clears TIF_SIGPENDING\nthere, schedule() returns immediately after the first freeze attempt\nand the task spins until the wait ends.\n\nSleep in TASK_INTERRUPTIBLE | TASK_FREEZABLE in do_wait(), so that the\nfreezer can freeze tasks waiting there directly, and in TASK_IDLE |\nTASK_FREEZABLE in the final loop, like coredump_task_exit() does.\n\nThis was hit with Chromium-based browsers: crashpad ptrace-attaches the\nthreads of a crashed renderer, which is a pid namespace init, and does\nnot reap those killed during the dump."}],"providerMetadata":{"dateUpdated":"2026-11-03T11:18:26.800Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/064a6761d6f6ac55d090d3eaca649577ee736713"},{"url":"https://git.kernel.org/stable/c/e8dafad7de9ede813af2d48cc04b7c88fef16682"},{"url":"https://git.kernel.org/stable/c/4b47107f1a80c809c80093e872bcaccdbae13db4"},{"url":"https://git.kernel.org/stable/c/2e10b8a74f55b5aae33db105d3e2d3ae759c865a"},{"url":"https://git.kernel.org/stable/c/7deb5770840339fe88755bf27b92f74edc26ee87"},{"url":"https://git.kernel.org/stable/c/81933038f5e273d17ed22792f906889393b204c5"}],"title":"pid_namespace: make zap_pid_ns_processes() freezable","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-99249","datePublished":"2026-11-03T11:18:26.800Z","dateReserved":"2026-09-25T10:25:14.403Z","dateUpdated":"2026-11-03T11:18:26.800Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-11-03 12:17:31","lastModifiedDate":"2026-11-03 12:17:31","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"99249","Ordinal":"1","Title":"pid_namespace: make zap_pid_ns_processes() freezable","CVE":"CVE-2026-99249","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"99249","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\npid_namespace: make zap_pid_ns_processes() freezable\n\nWhen the init of a pid namespace exits, zap_pid_ns_processes() waits\nuntil all other pids in the namespace are freed. A tracer outside the\nnamespace that does not reap its traced zombies keeps those pids\nallocated, so this wait has no upper bound, and while it lasts every\nsuspend attempt fails:\n\n  Freezing user space processes failed after 20.006 seconds (2 tasks refusing to freeze, wq_busy=0):\n\nNeither wait is freezable. The first loop sleeps in do_wait(), which\nreturns -ERESTARTSYS on the freezer's fake signal; the loop then clears\nTIF_SIGPENDING and waits again without ever freezing. The final loop\nsleeps in TASK_INTERRUPTIBLE, and since nothing clears TIF_SIGPENDING\nthere, schedule() returns immediately after the first freeze attempt\nand the task spins until the wait ends.\n\nSleep in TASK_INTERRUPTIBLE | TASK_FREEZABLE in do_wait(), so that the\nfreezer can freeze tasks waiting there directly, and in TASK_IDLE |\nTASK_FREEZABLE in the final loop, like coredump_task_exit() does.\n\nThis was hit with Chromium-based browsers: crashpad ptrace-attaches the\nthreads of a crashed renderer, which is a pid namespace init, and does\nnot reap those killed during the dump.","Type":"Description","Title":"pid_namespace: make zap_pid_ns_processes() freezable"}]}}}