In the Linux kernel, the following vulnerability has been resolved:
exfat: fix the infinite loop in exfat_readdir()
If the file system is corrupted so that a cluster is linked to itself in the cluster chain, and there is an unused directory entry in the cluster, 'dentry' will not be incremented, causing condition 'dentry < max_dentries' unable to prevent an infinite loop.
This infinite loop causes slock not to be released, and other tasks will hang, such as exfatsync_fs().
This commit stops traversing the cluster chain when there is unused directory entry in the cluster to avoid this infinite loop.
[
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dc1d7afceb982e8f666e70a582e6b5aa806de063",
"deprecated": false,
"id": "CVE-2024-57940-08cb5509",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d8cfbb8723bd3d3222f360227a1cc15227189ca6",
"deprecated": false,
"id": "CVE-2024-57940-0d322db8",
"signature_version": "v1",
"digest": {
"length": 2915.0,
"function_hash": "311752668417925008221703198157996956995"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@31beabd0f47f8c3ed9965ba861c9e5b252d4920a",
"deprecated": false,
"id": "CVE-2024-57940-3fcf88d8",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@28c21f0ac5293a4bf19b3e0e32005d6dd31a6c17",
"deprecated": false,
"id": "CVE-2024-57940-42baf62f",
"signature_version": "v1",
"digest": {
"length": 2915.0,
"function_hash": "311752668417925008221703198157996956995"
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dc1d7afceb982e8f666e70a582e6b5aa806de063",
"deprecated": false,
"id": "CVE-2024-57940-77dd590f",
"signature_version": "v1",
"digest": {
"length": 2946.0,
"function_hash": "18974866822195477480457497536754723673"
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fee873761bd978d077d8c55334b4966ac4cb7b59",
"deprecated": false,
"id": "CVE-2024-57940-9e713538",
"signature_version": "v1",
"digest": {
"length": 2317.0,
"function_hash": "269860287885784189074448962367526388796"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d9ea94f5cd117d56e573696d0045ab3044185a15",
"deprecated": false,
"id": "CVE-2024-57940-a4e8bc60",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d9ea94f5cd117d56e573696d0045ab3044185a15",
"deprecated": false,
"id": "CVE-2024-57940-cf51edc7",
"signature_version": "v1",
"digest": {
"length": 2946.0,
"function_hash": "18974866822195477480457497536754723673"
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@28c21f0ac5293a4bf19b3e0e32005d6dd31a6c17",
"deprecated": false,
"id": "CVE-2024-57940-d4c15988",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fee873761bd978d077d8c55334b4966ac4cb7b59",
"deprecated": false,
"id": "CVE-2024-57940-ee497af4",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d8cfbb8723bd3d3222f360227a1cc15227189ca6",
"deprecated": false,
"id": "CVE-2024-57940-f39a0b8f",
"signature_version": "v1",
"digest": {
"line_hashes": [
"268143765124572623542338256360523200203",
"141040602224796234143412022695312140005",
"241701102096295187319674790306092203126",
"293236506948800327123902023666385104541",
"263456369022168207869817283260115875111",
"338221784852070981184037616191781574668",
"275639932067725949425027224042224187850"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "exfat_readdir",
"file": "fs/exfat/dir.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@31beabd0f47f8c3ed9965ba861c9e5b252d4920a",
"deprecated": false,
"id": "CVE-2024-57940-f96a285b",
"signature_version": "v1",
"digest": {
"length": 2888.0,
"function_hash": "332499869587410789722918030059614837340"
}
}
]