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-&gt;shutdown flag at the beginning,<br /> call callbacks and do sync for card-&gt;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-&gt;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-&gt;controls_rwsem again, but this is already locked by the<br /> above. Since the sleeper isn&amp;#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-&gt;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&amp;#39;re at it, just to be sure, call wait_event_all()<br /> instead of wait_event(), although we don&amp;#39;t use exclusive events on<br /> this queue for now.

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)