btrfs: clean up our handling of refs == 0 in snapshot delete
In the Linux kernel, the following vulnerability has been resolved: btrfs: clean up our handling of refs == 0 in snapshot delete In reada we BUG_ON(refs == 0), which could be unkind since we aren't holding a lock on the extent leaf and thus could get a transient incorrect answer. In walk_down_proc we also BUG_ON(refs == 0), which could happen if we have extent tree corruption. Change that to return -EUCLEAN. In do_walk_down() we catch this case and handle it correctly, however we return -EIO, which -EUCLEAN is a more appropriate error code. Finally in walk_up_proc we have the same BUG_ON(refs == 0), so convert that to proper error handling. Also adjust the error message so we can actually do something with the information.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 4.19.322, 5.10.226, 5.15.167, 5.4.284, 6.1.110, 6.10.10, 6.6.51
- CVEs
- CVE-2024-46840
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 8 Nov 2026, 03:00 UTC · Revision 1
Source evidence
btrfs: clean up our handling of refs == 0 in snapshot delete
core-osv · Original sourcePublished 27 Sept 2024, 12:39 UTC
In the Linux kernel, the following vulnerability has been resolved: btrfs: clean up our handling of refs == 0 in snapshot delete In reada we BUG_ON(refs == 0), which could be unkind since we aren't holding a lock on the extent leaf and thus could get a transient incorrect answer. In walk_down_proc we also BUG_ON(refs == 0), which could happen if we have extent tree corruption. Change that to return -EUCLEAN. In do_walk_down() we catch this case and handle it correctly, however we return -EIO, which -EUCLEAN is a more appropriate error code. Finally in walk_up_proc we have the same BUG_ON(refs == 0), so convert that to proper error handling. Also adjust the error message so we can actually do something with the information.
osv:CVE-2024-46840
Kernel
Fixed versions: 4.19.322, 5.4.284, 5.10.226, 5.15.167, 6.1.110, 6.6.51, 6.10.10
Complete source record
{
"id": "b14ae8890d48ef135e56b2bb55485a171ca70213a546a3b349f040afe51f6b60",
"url": "https://osv.dev/vulnerability/CVE-2024-46840",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "btrfs: clean up our handling of refs == 0 in snapshot delete",
"summary": "In the Linux kernel, the following vulnerability has been resolved: btrfs: clean up our handling of refs == 0 in snapshot delete In reada we BUG_ON(refs == 0), which could be unkind since we aren't holding a lock on the extent leaf and thus could get a transient incorrect answer. In walk_down_proc we also BUG_ON(refs == 0), which could happen if we have extent tree corruption. Change that to return -EUCLEAN. In do_walk_down() we catch this case and handle it correctly, however we return -EIO, which -EUCLEAN is a more appropriate error code. Finally in walk_up_proc we have the same BUG_ON(refs == 0), so convert that to proper error handling. Also adjust the error message so we can actually do something with the information.",
"evidence": "osv:CVE-2024-46840",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "4.19.322",
"evidence": "/affected/1/ranges"
},
{
"value": "5.4.284",
"evidence": "/affected/1/ranges"
},
{
"value": "5.10.226",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.167",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.110",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.51",
"evidence": "/affected/1/ranges"
},
{
"value": "6.10.10",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2024-46840",
"aliases": [
"CVE-2024-46840"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "2c47e605a91dde6b0514f689645e7ab336c8592a"
},
{
"fixed": "c847b28a799733b04574060ab9d00f215970627d"
},
{
"fixed": "71291aa7246645ef622621934d2067400380645e"
},
{
"fixed": "c60676b81fab456b672796830f6d8057058f029c"
},
{
"fixed": "728d4d045b628e006b48a448f3326a7194c88d32"
},
{
"fixed": "9cc887ac24b7a0598f4042ae9af6b9a33072f75b"
},
{
"fixed": "7d1df13bf078ffebfedd361d714ff6cee1ff01b9"
},
{
"fixed": "03804641ec2d0da4fa088ad21c88e703d151ce16"
},
{
"fixed": "b8ccef048354074a548f108e51d0557d6adfd3a3"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-46840.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.6.31"
},
{
"fixed": "4.19.322"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.20.0"
},
{
"fixed": "5.4.284"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.226"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.167"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.110"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.51"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.10.10"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-46840.json"
}
}
],
"modified": "2026-10-28T02:30:53.309803239Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/03804641ec2d0da4fa088ad21c88e703d151ce16",
"https://git.kernel.org/stable/c/71291aa7246645ef622621934d2067400380645e",
"https://git.kernel.org/stable/c/728d4d045b628e006b48a448f3326a7194c88d32",
"https://git.kernel.org/stable/c/7d1df13bf078ffebfedd361d714ff6cee1ff01b9",
"https://git.kernel.org/stable/c/9cc887ac24b7a0598f4042ae9af6b9a33072f75b",
"https://git.kernel.org/stable/c/b8ccef048354074a548f108e51d0557d6adfd3a3",
"https://git.kernel.org/stable/c/c60676b81fab456b672796830f6d8057058f029c",
"https://git.kernel.org/stable/c/c847b28a799733b04574060ab9d00f215970627d",
"https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html",
"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/46xxx/CVE-2024-46840.json",
"https://nvd.nist.gov/vuln/detail/CVE-2024-46840",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/46xxx/CVE-2024-46840.json"
}
},
"related_cves": [
{
"value": "CVE-2024-46840",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 522018,
"published_at": "2024-09-27T12:39:34.998+00:00"
}