CVE-2024-35991
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
20/05/2024
Last modified:
24/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
dmaengine: idxd: Convert spinlock to mutex to lock evl workqueue<br />
<br />
drain_workqueue() cannot be called safely in a spinlocked context due to<br />
possible task rescheduling. In the multi-task scenario, calling<br />
queue_work() while drain_workqueue() will lead to a Call Trace as<br />
pushing a work on a draining workqueue is not permitted in spinlocked<br />
context.<br />
Call Trace:<br />
<br />
? __warn+0x7d/0x140<br />
? __queue_work+0x2b2/0x440<br />
? report_bug+0x1f8/0x200<br />
? handle_bug+0x3c/0x70<br />
? exc_invalid_op+0x18/0x70<br />
? asm_exc_invalid_op+0x1a/0x20<br />
? __queue_work+0x2b2/0x440<br />
queue_work_on+0x28/0x30<br />
idxd_misc_thread+0x303/0x5a0 [idxd]<br />
? __schedule+0x369/0xb40<br />
? __pfx_irq_thread_fn+0x10/0x10<br />
? irq_thread+0xbc/0x1b0<br />
irq_thread_fn+0x21/0x70<br />
irq_thread+0x102/0x1b0<br />
? preempt_count_add+0x74/0xa0<br />
? __pfx_irq_thread_dtor+0x10/0x10<br />
? __pfx_irq_thread+0x10/0x10<br />
kthread+0x103/0x140<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork+0x31/0x50<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork_asm+0x1b/0x30<br />
<br />
<br />
The current implementation uses a spinlock to protect event log workqueue<br />
and will lead to the Call Trace due to potential task rescheduling.<br />
<br />
To address the locking issue, convert the spinlock to mutex, allowing<br />
the drain_workqueue() to be called in a safe mutex-locked context.<br />
<br />
This change ensures proper synchronization when accessing the event log<br />
workqueue, preventing potential Call Trace and improving the overall<br />
robustness of the code.
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:*:*:*:*:*:*:*:* | 6.4 (including) | 6.6.30 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.8.9 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc5:*:*:*:*:*:* |
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/758071a35d9f3ffd84ff12169d081412a2f5f098
- https://git.kernel.org/stable/c/c9b732a9f73eadc638abdcf0a6d39bc7a0c1af5f
- https://git.kernel.org/stable/c/d5638de827cff0fce77007e426ec0ffdedf68a44
- https://git.kernel.org/stable/c/758071a35d9f3ffd84ff12169d081412a2f5f098
- https://git.kernel.org/stable/c/c9b732a9f73eadc638abdcf0a6d39bc7a0c1af5f
- https://git.kernel.org/stable/c/d5638de827cff0fce77007e426ec0ffdedf68a44



