{"api_version":"1","generated_at":"2026-08-18T11:34:49+00:00","cve":"CVE-2026-72202","urls":{"html":"https://cve.report/CVE-2026-72202","api":"https://cve.report/api/cve/CVE-2026-72202.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72202","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72202"},"summary":{"title":"ntfs: avoid heap allocation for free-cluster readahead state","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: avoid heap allocation for free-cluster readahead state\n\nget_nr_free_clusters() allocates a temporary file_ra_state before it\npublishes the precomputed free cluster count, sets NVolFreeClusterKnown(),\nand wakes vol->free_waitq. If that allocation fails, the worker returns\nwithout setting the flag or waking waiters, so callers waiting for the free\ncount can block indefinitely.\n\nThe readahead state is only used synchronously while scanning the bitmap.\nKeep it on the stack and pass it by address to the readahead helper. This\neliminates the early allocation failure path instead of adding a special\ncase that publishes a conservative count and wakes the waitqueue.\nZero-initialize the on-stack state because file_ra_state_init() only sets\nra_pages and prev_pos.\n\nApply the same treatment to __get_nr_free_mft_records(), which scans the\nMFT bitmap with the same short-lived readahead state.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:21:38","updated_at":"2026-08-18 07:16:53"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/c05132077df57a384919f61d7f8a8e76d748a6d4","name":"https://git.kernel.org/stable/c/c05132077df57a384919f61d7f8a8e76d748a6d4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/40ee64e633e5e413f2255bb48c063977d8c86f34","name":"https://git.kernel.org/stable/c/40ee64e633e5e413f2255bb48c063977d8c86f34","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72202","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72202","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6251f0b0de7d645e3591931ca4c11d8322c1866f 40ee64e633e5e413f2255bb48c063977d8c86f34 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6251f0b0de7d645e3591931ca4c11d8322c1866f c05132077df57a384919f61d7f8a8e76d748a6d4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 7.1","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"72202","cve":"CVE-2026-72202","epss":"0.004680000","percentile":"0.384800000","score_date":"2026-08-17","updated_at":"2026-08-18 00:11:47"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/ntfs/super.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"40ee64e633e5e413f2255bb48c063977d8c86f34","status":"affected","version":"6251f0b0de7d645e3591931ca4c11d8322c1866f","versionType":"git"},{"lessThan":"c05132077df57a384919f61d7f8a8e76d748a6d4","status":"affected","version":"6251f0b0de7d645e3591931ca4c11d8322c1866f","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/ntfs/super.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"7.1"},{"lessThan":"7.1","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"7.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"7.1","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: avoid heap allocation for free-cluster readahead state\n\nget_nr_free_clusters() allocates a temporary file_ra_state before it\npublishes the precomputed free cluster count, sets NVolFreeClusterKnown(),\nand wakes vol->free_waitq. If that allocation fails, the worker returns\nwithout setting the flag or waking waiters, so callers waiting for the free\ncount can block indefinitely.\n\nThe readahead state is only used synchronously while scanning the bitmap.\nKeep it on the stack and pass it by address to the readahead helper. This\neliminates the early allocation failure path instead of adding a special\ncase that publishes a conservative count and wakes the waitqueue.\nZero-initialize the on-stack state because file_ra_state_init() only sets\nra_pages and prev_pos.\n\nApply the same treatment to __get_nr_free_mft_records(), which scans the\nMFT bitmap with the same short-lived readahead state."}],"metrics":[{"cvssV3_1":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - fs/ntfs registers ntfs_export_ops; on servers with an rw-mounted NTFS volume exported via nfsd or ksmbd, remote NFS/SMB statfs, write, and fallocate RPCs reach ntfs_statfs, ntfs_fallocate, and iomap allocation paths that block on vol->free_waitq when precalc never publishes NVolFreeClusterKnown.\nAC:L - A local attacker can hold the system under GFP_NOFS memory pressure across NTFS mount so the tiny file_ra_state kzalloc in precalc_free_clusters fails; once that broken state exists, any statfs/write/fallocate caller deterministically enters wait_event without races or victim-specific layout.\nPR:N - Exploitation at trigger time needs only access to the mounted/exported NTFS volume (e.g., remote NFS/SMB statfs or write permission); no CAP_SYS_ADMIN, root, or init-namespace privileges are required on the server to hit the indefinite waitqueue block.\nUI:N - After an administrator has rw-mounted and optionally exported the NTFS volume (or automounted dual-boot/shared storage), attackers drive normal statfs or write operations that hang on free_waitq; no per-attack victim clicks, opens, or cooperative actions are required beyond that standing configuration.\nS:U - Impact is indefinite blocking of kernel threads serving the affected NTFS volume within the host kernel security authority; this is standard filesystem denial of service, not a VM escape, container breakout, or IOMMU boundary bypass.\nC:N - The bug is a missing wake on kzalloc failure in get_nr_free_clusters; it does not corrupt memory, read out of bounds, or use-after-free, and provides no kernel pointer leak or arbitrary memory disclosure primitive.\nI:N - Failed precalc leaves free-cluster accounting unpublished and stalls I/O waiters; it does not modify on-disk NTFS metadata or in-memory file contents beyond denying forward progress to blocked callers.\nA:H - After precalc aborts without NVolSetFreeClusterKnown or wake_up_all, wait_event(vol->free_waitq, NVolFreeClusterKnown) never completes, permanently hanging statfs, writes, fallocate, and cluster alloc/free paths (D-state), including nfsd/ksmbd worker threads serving the export."}]}],"providerMetadata":{"dateUpdated":"2026-08-18T06:56:20.164Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/40ee64e633e5e413f2255bb48c063977d8c86f34"},{"url":"https://git.kernel.org/stable/c/c05132077df57a384919f61d7f8a8e76d748a6d4"}],"title":"ntfs: avoid heap allocation for free-cluster readahead state","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72202","datePublished":"2026-08-15T05:53:59.587Z","dateReserved":"2026-08-09T03:40:39.912Z","dateUpdated":"2026-08-18T06:56:20.164Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:21:38","lastModifiedDate":"2026-08-18 07:16:53","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":3.6}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72202","Ordinal":"1","Title":"ntfs: avoid heap allocation for free-cluster readahead state","CVE":"CVE-2026-72202","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72202","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: avoid heap allocation for free-cluster readahead state\n\nget_nr_free_clusters() allocates a temporary file_ra_state before it\npublishes the precomputed free cluster count, sets NVolFreeClusterKnown(),\nand wakes vol->free_waitq. If that allocation fails, the worker returns\nwithout setting the flag or waking waiters, so callers waiting for the free\ncount can block indefinitely.\n\nThe readahead state is only used synchronously while scanning the bitmap.\nKeep it on the stack and pass it by address to the readahead helper. This\neliminates the early allocation failure path instead of adding a special\ncase that publishes a conservative count and wakes the waitqueue.\nZero-initialize the on-stack state because file_ra_state_init() only sets\nra_pages and prev_pos.\n\nApply the same treatment to __get_nr_free_mft_records(), which scans the\nMFT bitmap with the same short-lived readahead state.","Type":"Description","Title":"ntfs: avoid heap allocation for free-cluster readahead state"}]}}}