← Back to CVE Explorer

CVE-2026-99108

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: ntfs: fix FITRIM range alignment ntfs_trim_fs() aligns the start of a free extent up to the device discard granularity, but derives the discard length by aligning the original extent length down. When the free extent start is not discard-aligned, adding that length to the aligned start can extend the discard past the free extent and into allocated clusters. For example, with 4 KiB clusters and 32 KiB discard granularity, the free extent [4 KiB, 36 KiB) becomes the discard range [32 KiB, 64 KiB), so 28 KiB beyond the free extent may be discarded. Align the absolute end of the free extent down and derive the length from the two aligned endpoints. Skip extents that contain no full discard unit. Reproduced with a 4 KiB-cluster NTFS filesystem on scsi_debug configured for 32 KiB discard granularity and read-zero-after-trim. Before this change, FITRIM zeroed seven allocated 4 KiB clusters following an unaligned 32 KiB hole. With this change, the same data remains intact across FITRIM and remount.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-28 11:17:30.177000
Last modified
2026-10-28 11:17:30.177000
View original CVE JSON
{
  "id": "CVE-2026-99108",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-28T11:17:30.177",
  "lastModified": "2026-10-28T11:17:30.177",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: fix FITRIM range alignment\n\nntfs_trim_fs() aligns the start of a free extent up to the device discard\ngranularity, but derives the discard length by aligning the original extent\nlength down. When the free extent start is not discard-aligned, adding that\nlength to the aligned start can extend the discard past the free extent and\ninto allocated clusters.\n\nFor example, with 4 KiB clusters and 32 KiB discard granularity, the free\nextent [4 KiB, 36 KiB) becomes the discard range [32 KiB, 64 KiB), so\n28 KiB beyond the free extent may be discarded.\n\nAlign the absolute end of the free extent down and derive the length from\nthe two aligned endpoints. Skip extents that contain no full discard unit.\n\nReproduced with a 4 KiB-cluster NTFS filesystem on scsi_debug configured\nfor 32 KiB discard granularity and read-zero-after-trim. Before this\nchange, FITRIM zeroed seven allocated 4 KiB clusters following an unaligned\n32 KiB hole. With this change, the same data remains intact across FITRIM\nand remount."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "fs/ntfs/bitmap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "11ccc9107dc460de28af90fac1f42404d9802735",
              "lessThan": "5e87da8ba8d3d647d89c754912e45c1f1a3bfc2e",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "11ccc9107dc460de28af90fac1f42404d9802735",
              "lessThan": "03c6ecc4b4b13a3901f207152451fdd2d82e40c4",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "fs/ntfs/bitmap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "7.1",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "7.1",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.13",
              "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/03c6ecc4b4b13a3901f207152451fdd2d82e40c4",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/5e87da8ba8d3d647d89c754912e45c1f1a3bfc2e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}