nfsd: fix nfs4_openowner leak when concurrent nfsd4_open occur
In the Linux kernel, the following vulnerability has been resolved: nfsd: fix nfs4_openowner leak when concurrent nfsd4_open occur The action force umount(umount -f) will attempt to kill all rpc_task even umount operation may ultimately fail if some files remain open. Consequently, if an action attempts to open a file, it can potentially send two rpc_task to nfs server. NFS CLIENT thread1 thread2 open("file") ... nfs4_do_open _nfs4_do_open _nfs4_open_and_get_state _nfs4_proc_open nfs4_run_open_task /* rpc_task1 */ rpc_run_task rpc_wait_for_completion_task umount -f nfs_umount_begin rpc_killall_tasks rpc_signal_task rpc_task1 been wakeup and return -512 _nfs4_do_open // while loop ... nfs4_run_open_task /* rpc_task2 */ rpc_run_task rpc_wait_for_completion_task While processing an open request, nfsd will first attempt to find or allocate an nfs4_openowner. If it finds an nfs4_openowner that is not marked as NFS4_OO_CONFIRMED, this nfs4_openowner will released. Since two rpc_task can attempt to open the same file simultaneously from the client to server, and because two instances of nfsd can run concurrently, this situation can lead to lots of memory leak. Additionally, when we echo 0 to /proc/fs/nfsd/threads, warning will be triggered. NFS SERVER nfsd1 nfsd2 echo 0 > /proc/fs/nfsd/threads nfsd4_open nfsd4_process_open1 find_or_alloc_open_stateowner // alloc oo1, stateid1 nfsd4_open nfsd4_process_open1 find_or_alloc_open_stateowner // find oo1, without NFS4_OO_CONFIRMED release_
CVE-2024-56779
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: cve:CVE-2024-56779
Linux
Source reference: /containers/cna/affected/0/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Linux
Source reference: /containers/cna/affected/1/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "a85364f0d30dee01c5d5b4afa55a9629a8f36d8e",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "2d505a801e57428057563762f67a5a62009b2600",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "0ab0a3ad24e970e894abcac58f85c332d1726749",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "45abb68c941ebc9a35c6d3a7b08196712093c636",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "37dfc81266d3a32294524bfadd3396614f8633ee",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "6f73f920b7ad0084373e46121d7ac34117aed652",
"versionType": "git"
},
{
"status": "affected",
"version": "3234975f477f746c22d076ea178a79ea104b2ca7",
"lessThan": "98100e88dd8865999dc6379a3356cd799795fe7b",
"versionType": "git"
}
],
"programFiles": [
"fs/nfsd/nfs4state.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "3.17"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "3.17",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "5.4.287",
"versionType": "semver",
"lessThanOrEqual": "5.4.*"
},
{
"status": "unaffected",
"version": "5.10.231",
"versionType": "semver",
"lessThanOrEqual": "5.10.*"
},
{
"status": "unaffected",
"version": "5.15.174",
"versionType": "semver",
"lessThanOrEqual": "5.15.*"
},
{
"status": "unaffected",
"version": "6.1.120",
"versionType": "semver",
"lessThanOrEqual": "6.1.*"
},
{
"status": "unaffected",
"version": "6.6.64",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
},
{
"status": "unaffected",
"version": "6.12.4",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.13",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"fs/nfsd/nfs4state.c"
],
"defaultStatus": "affected"
}
]- Related CVEs
- CVE-2024-56779
Source reference:
/cveMetadata/cveId
Publisher severity
critical
Source reference: /containers/cna/metrics
- Event
- #26842 · Revision 1
- Added to Heist Feed
- Publisher date