CVE-2024-38600
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
19/06/2024
Last modified:
27/08/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ALSA: Fix deadlocks with kctl removals at disconnection<br />
<br />
In snd_card_disconnect(), we set card->shutdown flag at the beginning,<br />
call callbacks and do sync for card->power_ref_sleep waiters at the<br />
end. The callback may delete a kctl element, and this can lead to a<br />
deadlock when the device was in the suspended state. Namely:<br />
<br />
* A process waits for the power up at snd_power_ref_and_wait() in<br />
snd_ctl_info() or read/write() inside card->controls_rwsem.<br />
<br />
* The system gets disconnected meanwhile, and the driver tries to<br />
delete a kctl via snd_ctl_remove*(); it tries to take<br />
card->controls_rwsem again, but this is already locked by the<br />
above. Since the sleeper isn&#39;t woken up, this deadlocks.<br />
<br />
An easy fix is to wake up sleepers before processing the driver<br />
disconnect callbacks but right after setting the card->shutdown flag.<br />
Then all sleepers will abort immediately, and the code flows again.<br />
<br />
So, basically this patch moves the wait_event() call at the right<br />
timing. While we&#39;re at it, just to be sure, call wait_event_all()<br />
instead of wait_event(), although we don&#39;t use exclusive events on<br />
this queue for now.
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:*:*:*:*:*:*:*:* | 5.15.161 (excluding) | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.93 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.33 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.8.12 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.9 (including) | 6.9.3 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2f103287ef7960854808930499d1181bd0145d68
- https://git.kernel.org/stable/c/6b55e879e7bd023a03888fc6c8339edf82f576f4
- https://git.kernel.org/stable/c/87988a534d8e12f2e6fc01fe63e6c1925dc5307c
- https://git.kernel.org/stable/c/88ce3fe255d58a93624b467af036dc3519f309c7
- https://git.kernel.org/stable/c/c2fb439f4f1425a961d20bec818fed2c2d9ef70a
- https://git.kernel.org/stable/c/ff80185e7b7b547a0911fcfc8aefc61c3e8304d7


