CVE-2026-31589

mm: call ->free_folio() directly in folio_unmap_invalidate()

Critical · published April 24, 2026

CVSS v3.1
9.8
EPSS
0%
Percentile
37.6
In the wild
Unconfirmed
What it is

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

mm: call ->free_folio() directly in folio_unmap_invalidate()

We can only call filemap_free_folio() if we have a reference to (or hold a

lock on) the mapping. Otherwise, we've already removed the folio from the

mapping so it no longer pins the mapping and the mapping can be removed,

causing a use-after-free when accessing mapping->a_ops.

Follow the same pattern as __remove_mapping() and load the free_folio

function pointer before dropping the lock on the mapping. That lets us

make filemap_free_folio() static as this was the only caller outside

filemap.c.

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00444 · 37.6th percentile
Published
2026-04-24T14:42Z
EPSS history
Timeline
  • 24 APR 14:42Z
    mm: call ->free_folio() directly in folio_unmap_invalidate()
    cvelistv5