In the Linux kernel, the following vulnerability has been resolved:
NFS: fix nfsreleasefolio() to not deadlock via kcompactd writeback
Add PFKCOMPACTD flag and currentiskcompactd() helper to check for it so nfsreleasefolio() can skip calling nfswb_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 _filemapget_folio):
6070.550357] INFO: task kcompactd0:58 blocked for more than 4435 seconds.
{--- [58] "kcompactd0" [<0>] foliowaitbit+0xe8/0x200 [<0>] foliowaitwriteback+0x2b/0x80 [<0>] nfswbfolio+0x80/0x1b0 [nfs] [<0>] nfsreleasefolio+0x68/0x130 [nfs] [<0>] splithugepagetolisttoorder+0x362/0x840 [<0>] migratepagesbatch+0x43d/0xb90 [<0>] migratepagessync+0x9a/0x240 [<0>] migratepages+0x93c/0x9f0 [<0>] compactzone+0x8e2/0x1030 [<0>] compactnode+0xdb/0x120 [<0>] kcompactd+0x121/0x2e0 [<0>] kthread+0xcf/0x100 [<0>] retfromfork+0x31/0x40 [<0>] retfromforkasm+0x1a/0x30 ---}
[akpm@linux-foundation.org: fix build]
[
{
"signature_type": "Line",
"target": {
"file": "include/linux/compaction.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ce6d9c1c2b5cc785016faa11b48b6cd317eb367e",
"deprecated": false,
"id": "CVE-2025-21908-00b6d80d",
"signature_version": "v1",
"digest": {
"line_hashes": [
"80755937952123651937412674035628465080",
"81197114409552857481894423699220814478",
"136554759762420498244935210795369924859"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "include/linux/compaction.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5ae31c54cff745832b9bd5b32e71f3d1b607cd1e",
"deprecated": false,
"id": "CVE-2025-21908-0c1c3799",
"signature_version": "v1",
"digest": {
"line_hashes": [
"80755937952123651937412674035628465080",
"81197114409552857481894423699220814478",
"136554759762420498244935210795369924859"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8253ff29edcb429a9a6c75710941c6a16a9a34b1",
"deprecated": false,
"id": "CVE-2025-21908-177366a1",
"signature_version": "v1",
"digest": {
"line_hashes": [
"273922052892517088372478138086954509079",
"262132701811206239789326646684606249833",
"176473894606844144508235695009290838963",
"307237484266719269231195641665085907148",
"50847248554448417658550547163725540241",
"112311110605227139751536923201133152090",
"169989105588964603810560923559006983114",
"246494224225883907464716707536348145556"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "kcompactd",
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab0727d6e2196682351c25c1dd112136f6991f11",
"deprecated": false,
"id": "CVE-2025-21908-18a2c9c4",
"signature_version": "v1",
"digest": {
"length": 1039.0,
"function_hash": "43256935727564012825938826985236216565"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab0727d6e2196682351c25c1dd112136f6991f11",
"deprecated": false,
"id": "CVE-2025-21908-18b2ec6e",
"signature_version": "v1",
"digest": {
"line_hashes": [
"273922052892517088372478138086954509079",
"262132701811206239789326646684606249833",
"176473894606844144508235695009290838963",
"307237484266719269231195641665085907148",
"50847248554448417658550547163725540241",
"112311110605227139751536923201133152090",
"188184766259896707822638510110837317823",
"338927281443525297068340115431158970698"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "include/linux/compaction.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8253ff29edcb429a9a6c75710941c6a16a9a34b1",
"deprecated": false,
"id": "CVE-2025-21908-1ea1ecd2",
"signature_version": "v1",
"digest": {
"line_hashes": [
"80755937952123651937412674035628465080",
"81197114409552857481894423699220814478",
"136554759762420498244935210795369924859"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ce6d9c1c2b5cc785016faa11b48b6cd317eb367e",
"deprecated": false,
"id": "CVE-2025-21908-20b024c3",
"signature_version": "v1",
"digest": {
"line_hashes": [
"58560164733864374159180756812722313160",
"201729780354646732244201086443808602058",
"205372712879801161440702734484661467981",
"117462410939492734713383019952802773736",
"273916523678220243240945626174722525843",
"327164989066426007350784932508453294806"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "nfs_release_folio",
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8253ff29edcb429a9a6c75710941c6a16a9a34b1",
"deprecated": false,
"id": "CVE-2025-21908-3800e780",
"signature_version": "v1",
"digest": {
"length": 345.0,
"function_hash": "266270400002879865020092424565305187300"
}
},
{
"signature_type": "Function",
"target": {
"function": "kcompactd",
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8253ff29edcb429a9a6c75710941c6a16a9a34b1",
"deprecated": false,
"id": "CVE-2025-21908-3aacf3aa",
"signature_version": "v1",
"digest": {
"length": 1046.0,
"function_hash": "286713265233738167581064928131746310784"
}
},
{
"signature_type": "Line",
"target": {
"file": "include/linux/compaction.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab0727d6e2196682351c25c1dd112136f6991f11",
"deprecated": false,
"id": "CVE-2025-21908-61e30f7b",
"signature_version": "v1",
"digest": {
"line_hashes": [
"80755937952123651937412674035628465080",
"81197114409552857481894423699220814478",
"136554759762420498244935210795369924859"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "kcompactd",
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ce6d9c1c2b5cc785016faa11b48b6cd317eb367e",
"deprecated": false,
"id": "CVE-2025-21908-659bb904",
"signature_version": "v1",
"digest": {
"length": 921.0,
"function_hash": "301743802388857522860608655520104410846"
}
},
{
"signature_type": "Line",
"target": {
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab0727d6e2196682351c25c1dd112136f6991f11",
"deprecated": false,
"id": "CVE-2025-21908-68a36d08",
"signature_version": "v1",
"digest": {
"line_hashes": [
"232531358303367251746693038027496391350",
"156879544733729007776047025723455237330",
"67295641018754503458065305093173306312",
"117462410939492734713383019952802773736",
"273916523678220243240945626174722525843",
"327164989066426007350784932508453294806"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "nfs_release_folio",
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab0727d6e2196682351c25c1dd112136f6991f11",
"deprecated": false,
"id": "CVE-2025-21908-6edbd2fe",
"signature_version": "v1",
"digest": {
"length": 347.0,
"function_hash": "110179070459946651037433592910113533772"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5ae31c54cff745832b9bd5b32e71f3d1b607cd1e",
"deprecated": false,
"id": "CVE-2025-21908-7f440e85",
"signature_version": "v1",
"digest": {
"line_hashes": [
"273922052892517088372478138086954509079",
"262132701811206239789326646684606249833",
"176473894606844144508235695009290838963",
"307237484266719269231195641665085907148",
"50847248554448417658550547163725540241",
"112311110605227139751536923201133152090",
"169989105588964603810560923559006983114",
"246494224225883907464716707536348145556"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "nfs_release_folio",
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5ae31c54cff745832b9bd5b32e71f3d1b607cd1e",
"deprecated": false,
"id": "CVE-2025-21908-86110f7e",
"signature_version": "v1",
"digest": {
"length": 345.0,
"function_hash": "266270400002879865020092424565305187300"
}
},
{
"signature_type": "Function",
"target": {
"function": "kcompactd",
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5ae31c54cff745832b9bd5b32e71f3d1b607cd1e",
"deprecated": false,
"id": "CVE-2025-21908-9a7d79c8",
"signature_version": "v1",
"digest": {
"length": 1046.0,
"function_hash": "286713265233738167581064928131746310784"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ce6d9c1c2b5cc785016faa11b48b6cd317eb367e",
"deprecated": false,
"id": "CVE-2025-21908-b585e9b7",
"signature_version": "v1",
"digest": {
"line_hashes": [
"273922052892517088372478138086954509079",
"262132701811206239789326646684606249833",
"176473894606844144508235695009290838963",
"307237484266719269231195641665085907148",
"50847248554448417658550547163725540241",
"112311110605227139751536923201133152090",
"169989105588964603810560923559006983114",
"246494224225883907464716707536348145556"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "nfs_release_folio",
"file": "fs/nfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ce6d9c1c2b5cc785016faa11b48b6cd317eb367e",
"deprecated": false,
"id": "CVE-2025-21908-c0143604",
"signature_version": "v1",
"digest": {
"length": 345.0,
"function_hash": "266270400002879865020092424565305187300"
}
},
{
"signature_type": "Line",
"target": {
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8253ff29edcb429a9a6c75710941c6a16a9a34b1",
"deprecated": false,
"id": "CVE-2025-21908-ccc1075b",
"signature_version": "v1",
"digest": {
"line_hashes": [
"232531358303367251746693038027496391350",
"156879544733729007776047025723455237330",
"67295641018754503458065305093173306312",
"117462410939492734713383019952802773736",
"273916523678220243240945626174722525843",
"327164989066426007350784932508453294806"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "mm/compaction.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5ae31c54cff745832b9bd5b32e71f3d1b607cd1e",
"deprecated": false,
"id": "CVE-2025-21908-f3126279",
"signature_version": "v1",
"digest": {
"line_hashes": [
"232531358303367251746693038027496391350",
"156879544733729007776047025723455237330",
"67295641018754503458065305093173306312",
"117462410939492734713383019952802773736",
"273916523678220243240945626174722525843",
"327164989066426007350784932508453294806"
],
"threshold": 0.9
}
}
]