All vulnerabilities
CVE-2026-93233

Linux: drm/nouveau/dmem: fix callocated underflow on large folio split

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.15%Chance of exploitation activity in the next 30 days, higher than 4% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in0163b92946d0a7c816f619c57a4d9867954dd106Fixed versionCVE List
Published24 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 0163b92946d0a7c816f619c57a4d9867954dd106LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

drm/nouveau/dmem: fix callocated underflow on large folio split

nouveau_dmem_folio_free() drops chunk->callocated once per freed folio, while a large (compound) device-private folio is only counted once when it is allocated. When such a folio is split, the mm core invokes ->folio_split() (nouveau_dmem_folio_split()) once for each new sub-folio, but the hook only fixes up the sub-folio metadata and leaves chunk->callocated unchanged.

Each resulting sub-folio is later freed separately, so after a split the single allocation (+1) is met by N frees (-N), leaving chunk->callocated short by N-1. On the first split/free cycle it underflows: WARN_ON(!chunk->callocated) fires, the unsigned counter wraps and never returns to zero, so the chunk can no longer be reclaimed (nouveau_dmem_fini() also warns on the leaked count).

Account for the new sub-folio in the split hook, under the same lock as nouveau_dmem_folio_free(), so the count stays balanced.

Text from CVE List

Affected versions 6

  • Linuxaffected: c3228747107705d47c7e9a03598a434a0380cb73 before 0163b92946d0a7c816f619c57a4d9867954dd106CVE List
  • Linuxaffected: c3228747107705d47c7e9a03598a434a0380cb73 before c2256c044a1df39c8aad4dd2d6f709b2533e2d7aCVE List
  • Linuxaffected: 6.19CVE List
  • Linuxunaffected: all versions before 6.19CVE List
  • Linuxunaffected: 7.2.5 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 2