← Back to CVE Explorer

CVE-2026-98279

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: btrfs: handle lack of space when cleaning up verity items When enable_verity() hits the qgroup limit, rollback_verity() needs its own metadata reservation. When the qgroup limit or lack of space refuses the rollback, the whole filesystem is forced read-only even though the qgroup limit was for one subvolume only. Also orphan cleanup at the next mount fails the same way, so the leftover items are never removed: with -EDQUOT the subvolume stays unreachable, and with -ENOSPC on a full filesystem the next read-write mount fails. Start transactions with btrfs_start_transaction_fallback_global_rsv() in btrfs_orphan_cleanup(), drop_verity_items() and rollback_verity(). Those calls only delete items and free the space in the end, so they may use the global reserve and skip the qgroup limit, which avoids -ENOSPC and -EDQUOT.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-06 09:18:17.783000
Last modified
2026-10-19 10:18:29.343000
View original CVE JSON
{
  "id": "CVE-2026-98279",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-06T09:18:17.783",
  "lastModified": "2026-10-19T10:18:29.343",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: handle lack of space when cleaning up verity items\n\nWhen enable_verity() hits the qgroup limit, rollback_verity() needs its\nown metadata reservation. When the qgroup limit or lack of space refuses\nthe rollback, the whole filesystem is forced read-only even though the\nqgroup limit was for one subvolume only. Also orphan cleanup at the next\nmount fails the same way, so the leftover items are never removed: with\n-EDQUOT the subvolume stays unreachable, and with -ENOSPC on a full\nfilesystem the next read-write mount fails.\n\nStart transactions with btrfs_start_transaction_fallback_global_rsv() in\nbtrfs_orphan_cleanup(), drop_verity_items() and rollback_verity(). Those\ncalls only delete items and free the space in the end, so they may use\nthe global reserve and skip the qgroup limit, which avoids -ENOSPC and\n-EDQUOT."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "fs/btrfs/inode.c",
            "fs/btrfs/verity.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "146054090b0859b28fc39015c7704ccc3c3a347f",
              "lessThan": "4b7ecabd87dc40998fe7870d7975279649229a3b",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "146054090b0859b28fc39015c7704ccc3c3a347f",
              "lessThan": "efa5780b84f066f419a667f6b9542368b2f62074",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "146054090b0859b28fc39015c7704ccc3c3a347f",
              "lessThan": "76bf149cd0298544631e756670b89c399c7acbca",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "fs/btrfs/inode.c",
            "fs/btrfs/verity.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "5.15",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "5.15",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.54",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.8",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/4b7ecabd87dc40998fe7870d7975279649229a3b",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/76bf149cd0298544631e756670b89c399c7acbca",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/efa5780b84f066f419a667f6b9542368b2f62074",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}