CVE-2025-39953

Source
https://cve.org/CVERecord?id=CVE-2025-39953
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-39953.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-39953
Downstream
Related
Published
2025-10-04T07:31:13.237Z
Modified
2026-03-11T05:39:21.883724Z
Summary
cgroup: split cgroup_destroy_wq into 3 workqueues
Details

In the Linux kernel, the following vulnerability has been resolved:

cgroup: split cgroupdestroywq into 3 workqueues

A hung task can occur during [1] LTP cgroup testing when repeatedly mounting/unmounting perfevent and netprio controllers with systemd.unifiedcgrouphierarchy=1. The hang manifests in cgrouplockanddrainoffline() during root destruction.

Related case: cgroupfjfunctionperfevent cgroupfjfunction.sh perfevent cgroupfjfunctionnetprio cgroupfjfunction.sh netprio

Call Trace: cgrouplockanddrainoffline+0x14c/0x1e8 cgroupdestroyroot+0x3c/0x2c0 cssfreerworkfn+0x248/0x338 processonework+0x16c/0x3b8 workerthread+0x22c/0x3b0 kthread+0xec/0x100 retfromfork+0x10/0x20

Root Cause:

CPU0 CPU1 mount perfevent umount netprio cgroup1gettree cgroupkillsb rebindsubsystems // root destruction enqueues // cgroupdestroywq // kill all perfevent css // one perfevent css A is dying // css A offline enqueues cgroupdestroywq // root destruction will be executed first cssfreerworkfn cgroupdestroyroot cgrouplockanddrainoffline // some perf descendants are dying // cgroupdestroywq max_active = 1 // waiting for css A to die

Problem scenario: 1. CPU0 mounts perfevent (rebindsubsystems) 2. CPU1 unmounts netprio (cgroupkillsb), queuing root destruction work 3. A dying perfevent CSS gets queued for offline after root destruction 4. Root destruction waits for offline completion, but offline work is blocked behind root destruction in cgroupdestroywq (max_active=1)

Solution: Split cgroupdestroywq into three dedicated workqueues: cgroupofflinewq – Handles CSS offline operations cgroupreleasewq – Manages resource release cgroupfreewq – Performs final memory deallocation

This separation eliminates blocking in the CSS free path while waiting for offline operations to complete.

[1] https://github.com/linux-test-project/ltp/blob/master/runtest/controllers

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/39xxx/CVE-2025-39953.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
334c3679ec4b2b113c35ebe37d2018b112dd5013
Fixed
cabadd7fd15f97090f752fd22dd7f876a0dc3dc4
Fixed
a0c896bda7077aa5005473e2c5b3c27173313b4c
Fixed
f2795d1b92506e3adf52a298f7181032a1525e04
Fixed
993049c9b1355c78918344a6403427d53f9ee700
Fixed
4a1e3ec28e8062cd9f339aa6a942df9c5bcb6811
Fixed
ded4d207a3209a834b6831ceec7f39b934c74802
Fixed
05e0b03447cf215ec384210441b34b7a3b16e8b0
Fixed
79f919a89c9d06816dbdbbd168fa41d27411a7f9

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-39953.json"