dm-thin: fix metadata refcount underflow
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.209, 6.1.175, 6.6.140, 6.12.88, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: dm-thin: fix metadata refcount underflow There's a bug in dm-thin in the function rebalance_children. If the internal btree node has one entry, the code tries to copy all btree entries from the node's child to the node itself and then decrement the child's reference count. If the child node is shared (it has reference count > 1), we won't free it, so there would be two pointers to each of the grandchildren nodes. But the reference counts of the grandchildren is not increased, thus the reference count doesn't match the number of pointers that point to the grandchildren. This results in "device mapper: space map common: unable to decrement block" errors. Fix this bug by incrementing reference counts on the grandchildren if the btree node is shared.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in b719d12cb94df345e9ad2715fd0abe9afcaeb111; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in f49b41c9eb7c6ff00df27cd49cea210abbadd8ad; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in f06f6aededd792a754cd677c02b3d3016d868c2c; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in 12161e03d33afce781f68fa11cc6060538862fad; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in 323d252a4a378834e4fe68298ca61cfc5dd3a460; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in 85311a585a26640760cd0f3349ab9f2905691044; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in 5ec0debbcfd43596e32c1239e993de06a704e04c; From 3241b1d3e0aaafbfcd320f4d71ade629728cc4f4 · fixed in 09a65adc7d8bbfce06392cb6d375468e2728ead5
- Linux Linux
3.2
- KernelLinux
From 3.2.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.140; From 6.7.0 · fixed in 6.12.88; From 6.13.0 · fixed in 6.18.30; From 6.19.0 · fixed in 7.0.7
References 8
git.kernel.org
- stable/c/b719d12cb94df345e9ad2715fd0abe9afcaeb111
- stable/c/f49b41c9eb7c6ff00df27cd49cea210abbadd8ad
- stable/c/f06f6aededd792a754cd677c02b3d3016d868c2c
- stable/c/12161e03d33afce781f68fa11cc6060538862fad
- stable/c/323d252a4a378834e4fe68298ca61cfc5dd3a460
- stable/c/85311a585a26640760cd0f3349ab9f2905691044
- stable/c/5ec0debbcfd43596e32c1239e993de06a704e04c
- stable/c/09a65adc7d8bbfce06392cb6d375468e2728ead5