Skip to content
Heist/ feed
Back to feed
UnratedFix available

btrfs: clean up our handling of refs == 0 in snapshot delete

Type: advisorySources: OSV

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 source

Published 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"
}