CVE-2025-21908

NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback

Medium · published April 1, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
4.2
In the wild
Unconfirmed
What it is

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

NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback

Add PF_KCOMPACTD flag and current_is_kcompactd() helper to check for it so

nfs_release_folio() can skip calling nfs_wb_folio() from kcompactd.

Otherwise NFS can deadlock waiting for kcompactd enduced writeback which

recurses back to NFS (which triggers writeback to NFSD via NFS loopback

mount on the same host, NFSD blocks waiting for XFS's call to

__filemap_get_folio):

6070.550357] INFO: task kcompactd0:58 blocked for more than 4435 seconds.

{---

[58] "kcompactd0"

[<0>] folio_wait_bit+0xe8/0x200

[<0>] folio_wait_writeback+0x2b/0x80

[<0>] nfs_wb_folio+0x80/0x1b0 [nfs]

[<0>] nfs_release_folio+0x68/0x130 [nfs]

[<0>] split_huge_page_to_list_to_order+0x362/0x840

[<0>] migrate_pages_batch+0x43d/0xb90

[<0>] migrate_pages_sync+0x9a/0x240

[<0>] migrate_pages+0x93c/0x9f0

[<0>] compact_zone+0x8e2/0x1030

[<0>] compact_node+0xdb/0x120

[<0>] kcompactd+0x121/0x2e0

[<0>] kthread+0xcf/0x100

[<0>] ret_from_fork+0x31/0x40

[<0>] ret_from_fork_asm+0x1a/0x30

---}

[[email protected]: fix build]

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00154 · 4.2th percentile
Published
2025-04-01T15:40Z
EPSS history
Timeline
  • 01 APR 15:40Z
    NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback
    cvelistv5