Linux: blk-cgroup: fix leaks and online flag on radix_tree_insert failure
What fixes it
- 0f840db042caee9d2f3dcdcf97d6674f6e4c1e30LinuxCVE List
- 6e85f02d45b5977c0326a8d854c6db878aa6b34aLinuxCVE List
- 4c0d150fb98ea40760611979f4e664c244b20966LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
blk-cgroup: fix leaks and online flag on radix_tree_insert failure
When radix_tree_insert() fails in blkg_create(), the error path has two issues:
- blkg->online is set to true unconditionally, even when the blkg was
never fully inserted. Move the assignment inside the success block.
- The error path calls blkg_put() without first calling
percpu_ref_kill(). Because the refcount is still in percpu mode, percpu_ref_put() only does this_cpu_sub() without checking for zero, so blkg_release() is never triggered. This permanently leaks the blkg memory, its percpu iostat, policy data, the parent blkg reference, and the cgroup css reference — the latter preventing the cgroup from ever being destroyed.
Fix by replacing blkg_put() with percpu_ref_kill(), matching the pattern used in blkg_destroy().
Text from CVE List
Affected versions 16
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before 0f840db042caee9d2f3dcdcf97d6674f6e4c1e30CVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before f53945d7c712efe63fadbcc5ffed6370871fd0d3CVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before ada8270ccdb6f212da5eb22614c28ea418746a4aCVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before c3650be82ef6e7af13b79b2d10a7363bdf54aa7fCVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before 6e85f02d45b5977c0326a8d854c6db878aa6b34aCVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before 4c0d150fb98ea40760611979f4e664c244b20966CVE List
- Linuxaffected: 7fcf2b033b84e261dca283bc2911aaea4b07b525 before dbbca20764382b4d411ec2918f4e278ffe547accCVE List
- Linuxaffected: 5.0CVE List
- Linuxunaffected: all versions before 5.0CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List
References 7
- git.kernel.org/stable/c/0f840db042caee9d2f3dcdcf97d6674f6e4c1e30Referencevia CVE List
- git.kernel.org/stable/c/f53945d7c712efe63fadbcc5ffed6370871fd0d3Referencevia CVE List
- git.kernel.org/stable/c/ada8270ccdb6f212da5eb22614c28ea418746a4aReferencevia CVE List
- git.kernel.org/stable/c/c3650be82ef6e7af13b79b2d10a7363bdf54aa7fReferencevia CVE List
- git.kernel.org/stable/c/6e85f02d45b5977c0326a8d854c6db878aa6b34aReferencevia CVE List
- git.kernel.org/stable/c/4c0d150fb98ea40760611979f4e664c244b20966Referencevia CVE List
- git.kernel.org/stable/c/dbbca20764382b4d411ec2918f4e278ffe547accReferencevia CVE List