CVE-2024-26758
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
03/04/2024
Last modified:
04/04/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
md: Don&#39;t ignore suspended array in md_check_recovery()<br />
<br />
mddev_suspend() never stop sync_thread, hence it doesn&#39;t make sense to<br />
ignore suspended array in md_check_recovery(), which might cause<br />
sync_thread can&#39;t be unregistered.<br />
<br />
After commit f52f5c71f3d4 ("md: fix stopping sync thread"), following<br />
hang can be triggered by test shell/integrity-caching.sh:<br />
<br />
1) suspend the array:<br />
raid_postsuspend<br />
mddev_suspend<br />
<br />
2) stop the array:<br />
raid_dtr<br />
md_stop<br />
__md_stop_writes<br />
stop_sync_thread<br />
set_bit(MD_RECOVERY_INTR, &mddev->recovery);<br />
md_wakeup_thread_directly(mddev->sync_thread);<br />
wait_event(..., !test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))<br />
<br />
3) sync thread done:<br />
md_do_sync<br />
set_bit(MD_RECOVERY_DONE, &mddev->recovery);<br />
md_wakeup_thread(mddev->thread);<br />
<br />
4) daemon thread can&#39;t unregister sync thread:<br />
md_check_recovery<br />
if (mddev->suspended)<br />
return; -> return directly<br />
md_read_sync_thread<br />
clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery);<br />
-> MD_RECOVERY_RUNNING can&#39;t be cleared, hence step 2 hang;<br />
<br />
This problem is not just related to dm-raid, fix it by ignoring<br />
suspended array in md_check_recovery(). And follow up patches will<br />
improve dm-raid better to frozen sync thread during suspend.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.0 (including) | 6.7.7 (excluding) |
cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page