---
id: "CVE-2026-99108"
kind: "vulnerability"
aliases: ["CVE-2026-99108"]
title: "Linux kernel NTFS: FITRIM discards allocated clusters past free extent"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["kernel", "linux", "linux-kernel", "ntfs", "runtime"]
not_affected_if: ["no-ntfs-mounts"]
published_at: "2026-10-28T11:17:30+00:00"
first_seen_at: "2026-10-28T11:32:34+00:00"
updated_at: "2026-10-28T11:37:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-99108", "first_seen_at": "2026-10-28T11:32:34+00:00"}]
---

# Linux kernel NTFS: FITRIM discards allocated clusters past free extent

The Linux kernel's NTFS driver computes the discard length for FITRIM incorrectly when a free extent does not start on a discard-aligned boundary. The discard can extend into allocated clusters, which can destroy file data on devices that zero data after trim.

_Summary, check and fix written by a model from the sources; labelled as such._

## Timeline

- 2026-10-28T11:32:34+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-99108

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
