CVE-2023-53760
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
08/12/2025
Last modified:
08/12/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
scsi: ufs: core: mcq: Fix &hwq->cq_lock deadlock issue<br />
<br />
When ufshcd_err_handler() is executed, CQ event interrupt can enter waiting<br />
for the same lock. This can happen in ufshcd_handle_mcq_cq_events() and<br />
also in ufs_mtk_mcq_intr(). The following warning message will be generated<br />
when &hwq->cq_lock is used in IRQ context with IRQ enabled. Use<br />
ufshcd_mcq_poll_cqe_lock() with spin_lock_irqsave instead of spin_lock to<br />
resolve the deadlock issue.<br />
<br />
[name:lockdep&]WARNING: inconsistent lock state<br />
[name:lockdep&]--------------------------------<br />
[name:lockdep&]inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.<br />
[name:lockdep&]kworker/u16:4/260 [HC0[0]:SC0[0]:HE1:SE1] takes:<br />
ffffff8028444600 (&hwq->cq_lock){?.-.}-{2:2}, at:<br />
ufshcd_mcq_poll_cqe_lock+0x30/0xe0<br />
[name:lockdep&]{IN-HARDIRQ-W} state was registered at:<br />
lock_acquire+0x17c/0x33c<br />
_raw_spin_lock+0x5c/0x7c<br />
ufshcd_mcq_poll_cqe_lock+0x30/0xe0<br />
ufs_mtk_mcq_intr+0x60/0x1bc [ufs_mediatek_mod]<br />
__handle_irq_event_percpu+0x140/0x3ec<br />
handle_irq_event+0x50/0xd8<br />
handle_fasteoi_irq+0x148/0x2b0<br />
generic_handle_domain_irq+0x4c/0x6c<br />
gic_handle_irq+0x58/0x134<br />
call_on_irq_stack+0x40/0x74<br />
do_interrupt_handler+0x84/0xe4<br />
el1_interrupt+0x3c/0x78<br />
<br />
<br />
Possible unsafe locking scenario:<br />
CPU0<br />
----<br />
lock(&hwq->cq_lock);<br />
<br />
lock(&hwq->cq_lock);<br />
*** DEADLOCK ***<br />
2 locks held by kworker/u16:4/260:<br />
<br />
[name:lockdep&]<br />
stack backtrace:<br />
CPU: 7 PID: 260 Comm: kworker/u16:4 Tainted: G S W OE<br />
6.1.17-mainline-android14-2-g277223301adb #1<br />
Workqueue: ufs_eh_wq_0 ufshcd_err_handler<br />
<br />
Call trace:<br />
dump_backtrace+0x10c/0x160<br />
show_stack+0x20/0x30<br />
dump_stack_lvl+0x98/0xd8<br />
dump_stack+0x20/0x60<br />
print_usage_bug+0x584/0x76c<br />
mark_lock_irq+0x488/0x510<br />
mark_lock+0x1ec/0x25c<br />
__lock_acquire+0x4d8/0xffc<br />
lock_acquire+0x17c/0x33c<br />
_raw_spin_lock+0x5c/0x7c<br />
ufshcd_mcq_poll_cqe_lock+0x30/0xe0<br />
ufshcd_poll+0x68/0x1b0<br />
ufshcd_transfer_req_compl+0x9c/0xc8<br />
ufshcd_err_handler+0x3bc/0xea0<br />
process_one_work+0x2f4/0x7e8<br />
worker_thread+0x234/0x450<br />
kthread+0x110/0x134<br />
ret_from_fork+0x10/0x20



