ALSA: Fix deadlocks with kctl removals at disconnection
In snd_card_disconnect(), we set card->shutdown flag at the beginning,
call callbacks and do sync for card->power_ref_sleep waiters at the
end. The callback may delete a kctl element, and this can lead to a
deadlock when the device was in the suspended state. Namely:
* A process waits for the power up at snd_power_ref_and_wait() in
snd_ctl_info() or read/write() inside card->controls_rwsem.
* The system gets disconnected meanwhile, and the driver tries to
delete a kctl via snd_ctl_remove*(); it tries to take
card->controls_rwsem again, but this is already locked by the
above. Since the sleeper isn't woken up, this deadlocks.
An easy fix is to wake up sleepers before processing the driver
disconnect callbacks but right after setting the card->shutdown flag.
Then all sleepers will abort immediately, and the code flows again.
So, basically this patch moves the wait_event() call at the right
timing. While we're at it, just to be sure, call wait_event_all()
instead of wait_event(), although we don't use exclusive events on
this queue for now.
Metrics
Affected Vendors & Products
| Source | ID | Title |
|---|---|---|
Ubuntu USN |
USN-6949-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6949-2 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6950-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6950-2 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6950-3 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-6950-4 | Linux kernel (HWE) vulnerabilities |
Ubuntu USN |
USN-6951-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6951-2 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-6951-3 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-6951-4 | Linux kernel (BlueField) vulnerabilities |
Ubuntu USN |
USN-6952-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-6953-1 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-6955-1 | Linux kernel (OEM) vulnerabilities |
Ubuntu USN |
USN-6956-1 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-6957-1 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-6979-1 | Linux kernel (Raspberry Pi) vulnerabilities |
Ubuntu USN |
USN-7019-1 | Linux kernel vulnerabilities |
Solution
No solution given by the vendor.
Workaround
No workaround given by the vendor.
Wed, 13 Nov 2024 02:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Redhat
Redhat enterprise Linux |
|
| CPEs | cpe:/a:redhat:enterprise_linux:9 cpe:/o:redhat:enterprise_linux:9 |
|
| Vendors & Products |
Redhat
Redhat enterprise Linux |
Wed, 06 Nov 2024 20:15:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
Thu, 12 Sep 2024 08:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
Wed, 11 Sep 2024 13:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
Tue, 27 Aug 2024 16:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Linux
Linux linux Kernel |
|
| Weaknesses | CWE-667 | |
| CPEs | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | |
| Vendors & Products |
Linux
Linux linux Kernel |
|
| Metrics |
cvssV3_1
|
cvssV3_1
|
Status: PUBLISHED
Assigner: Linux
Published:
Updated: 2025-05-21T09:12:43.203Z
Reserved: 2024-06-18T19:36:34.932Z
Link: CVE-2024-38600
Updated: 2024-08-02T04:12:26.017Z
Status : Modified
Published: 2024-06-19T14:15:19.990
Modified: 2024-11-21T09:26:27.253
Link: CVE-2024-38600
OpenCVE Enrichment
No data.
Ubuntu USN