In the Linux kernel, the following vulnerability has been resolved:
md: fix soft lockup in status_resync
statusresync() will calculate 'currresync - recovery_active' to show user a progress bar like following:
[============>........] resync = 61.4%
'currresync' and 'recoveryactive' is updated in mddosync(), and statusresync() can read them concurrently, hence it's possible that 'currresync - recoveryactive' can overflow to a huge number. In this case statusresync() will be stuck in the loop to print a large amount of '=', which will end up soft lockup.
Fix the problem by setting 'resync' to MDRESYNCACTIVE in this case, this way resync in progress will be reported to user.
[
{
"id": "CVE-2023-53620-0b4709ea",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4acb6c3ede88d6b7d33742a09e63cfce5e7fb69",
"target": {
"file": "drivers/md/md.c",
"function": "status_resync"
},
"digest": {
"function_hash": "269138818071923304530100636219213239404",
"length": 2645.0
},
"deprecated": false,
"signature_version": "v1"
},
{
"id": "CVE-2023-53620-2648fe3a",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6efddf1e32e2a264694766ca485a4f5e04ee82a7",
"target": {
"file": "drivers/md/md.c"
},
"digest": {
"line_hashes": [
"295734117467916663896351035998061982035",
"211935701963669709149571304265881026228",
"64044633366754145108843085370711050938",
"52782035309893042854404684941682688846",
"339561951514130735929963857830075594382",
"149561321357230233148218310837047238943",
"8710053488666772748369672757399550316"
],
"threshold": 0.9
},
"deprecated": false,
"signature_version": "v1"
},
{
"id": "CVE-2023-53620-7eb75ef9",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4acb6c3ede88d6b7d33742a09e63cfce5e7fb69",
"target": {
"file": "drivers/md/md.c"
},
"digest": {
"line_hashes": [
"295734117467916663896351035998061982035",
"211935701963669709149571304265881026228",
"64044633366754145108843085370711050938",
"52782035309893042854404684941682688846",
"339561951514130735929963857830075594382",
"149561321357230233148218310837047238943",
"8710053488666772748369672757399550316"
],
"threshold": 0.9
},
"deprecated": false,
"signature_version": "v1"
},
{
"id": "CVE-2023-53620-bd848c91",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@23309704e90859af2662bedc44101e6d1d2ece7e",
"target": {
"file": "drivers/md/md.c",
"function": "status_resync"
},
"digest": {
"function_hash": "269138818071923304530100636219213239404",
"length": 2645.0
},
"deprecated": false,
"signature_version": "v1"
},
{
"id": "CVE-2023-53620-e42575f2",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6efddf1e32e2a264694766ca485a4f5e04ee82a7",
"target": {
"file": "drivers/md/md.c",
"function": "status_resync"
},
"digest": {
"function_hash": "269138818071923304530100636219213239404",
"length": 2645.0
},
"deprecated": false,
"signature_version": "v1"
},
{
"id": "CVE-2023-53620-e62156f2",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@23309704e90859af2662bedc44101e6d1d2ece7e",
"target": {
"file": "drivers/md/md.c"
},
"digest": {
"line_hashes": [
"295734117467916663896351035998061982035",
"211935701963669709149571304265881026228",
"64044633366754145108843085370711050938",
"52782035309893042854404684941682688846",
"339561951514130735929963857830075594382",
"149561321357230233148218310837047238943",
"8710053488666772748369672757399550316"
],
"threshold": 0.9
},
"deprecated": false,
"signature_version": "v1"
}
]