In the Linux kernel, the following vulnerability has been resolved:
kernfs: Relax constraint in draining guard
The active reference lifecycle provides the break/unbreak mechanism but the active reference is not truly active after unbreak -- callers don't use it afterwards but it's important for proper pairing of kn->active counting. Assuming this mechanism is in place, the WARN check in kernfsshoulddrainopenfiles() is too sensitive -- it may transiently catch those (rightful) callers between kernfsunbreakactiveprotection() and kernfsput_active() as found out by Chen Ridong:
kernfs_remove_by_name_ns kernfs_get_active // active=1
__kernfs_remove // active=0x80000002
kernfs_drain ...
wait_event
//waiting (active == 0x80000001)
kernfs_break_active_protection
// active = 0x80000001
// continue
kernfs_unbreak_active_protection
// active = 0x80000002
...
kernfs_should_drain_open_files
// warning occurs
kernfs_put_active
To avoid the false positives (mind paniconwarn) remove the check altogether. (This is meant as quick fix, I think active reference break/unbreak may be simplified with larger rework.)
[
{
"id": "CVE-2025-38282-446c06c1",
"deprecated": false,
"signature_type": "Function",
"target": {
"file": "fs/kernfs/file.c",
"function": "kernfs_should_drain_open_files"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2d6a67c2b3b87808a347dc1047b520a9dd177a4f",
"signature_version": "v1",
"digest": {
"length": 277.0,
"function_hash": "191161167797365439112024609084127423997"
}
},
{
"id": "CVE-2025-38282-6c24c6aa",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "fs/kernfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bfb154f95d5f0ab7ed056f23aba8c1a94cb3927",
"signature_version": "v1",
"digest": {
"line_hashes": [
"188748032545593886488512333202744286941",
"239011881198362926999095592815520176555",
"20664914832361998073579643131189827532",
"281364362325460467582818483801286698822"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38282-768405fb",
"deprecated": false,
"signature_type": "Function",
"target": {
"file": "fs/kernfs/file.c",
"function": "kernfs_should_drain_open_files"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@071d8e4c2a3b0999a9b822e2eb8854784a350f8a",
"signature_version": "v1",
"digest": {
"length": 277.0,
"function_hash": "191161167797365439112024609084127423997"
}
},
{
"id": "CVE-2025-38282-ae765941",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "fs/kernfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@071d8e4c2a3b0999a9b822e2eb8854784a350f8a",
"signature_version": "v1",
"digest": {
"line_hashes": [
"188748032545593886488512333202744286941",
"239011881198362926999095592815520176555",
"20664914832361998073579643131189827532",
"281364362325460467582818483801286698822"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38282-b5852704",
"deprecated": false,
"signature_type": "Function",
"target": {
"file": "fs/kernfs/file.c",
"function": "kernfs_should_drain_open_files"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6c81f1c7812c61f187bed1b938f1d2e391d503ab",
"signature_version": "v1",
"digest": {
"length": 277.0,
"function_hash": "191161167797365439112024609084127423997"
}
},
{
"id": "CVE-2025-38282-c0277153",
"deprecated": false,
"signature_type": "Function",
"target": {
"file": "fs/kernfs/file.c",
"function": "kernfs_should_drain_open_files"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bfb154f95d5f0ab7ed056f23aba8c1a94cb3927",
"signature_version": "v1",
"digest": {
"length": 277.0,
"function_hash": "191161167797365439112024609084127423997"
}
},
{
"id": "CVE-2025-38282-c9df633c",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "fs/kernfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6c81f1c7812c61f187bed1b938f1d2e391d503ab",
"signature_version": "v1",
"digest": {
"line_hashes": [
"188748032545593886488512333202744286941",
"239011881198362926999095592815520176555",
"20664914832361998073579643131189827532",
"281364362325460467582818483801286698822"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38282-e06c311a",
"deprecated": false,
"signature_type": "Function",
"target": {
"file": "fs/kernfs/file.c",
"function": "kernfs_should_drain_open_files"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@72275c888f8962b406ee9c6885c79bf68cca5a63",
"signature_version": "v1",
"digest": {
"length": 277.0,
"function_hash": "191161167797365439112024609084127423997"
}
},
{
"id": "CVE-2025-38282-e69418a0",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "fs/kernfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@72275c888f8962b406ee9c6885c79bf68cca5a63",
"signature_version": "v1",
"digest": {
"line_hashes": [
"188748032545593886488512333202744286941",
"239011881198362926999095592815520176555",
"20664914832361998073579643131189827532",
"281364362325460467582818483801286698822"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38282-e96c71b2",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "fs/kernfs/file.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2d6a67c2b3b87808a347dc1047b520a9dd177a4f",
"signature_version": "v1",
"digest": {
"line_hashes": [
"188748032545593886488512333202744286941",
"239011881198362926999095592815520176555",
"20664914832361998073579643131189827532",
"281364362325460467582818483801286698822"
],
"threshold": 0.9
}
}
]