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.

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:*:*:*:*:*:*