CVE-2023-53281 in Linux
Сводка
по VulDB • 13.06.2026
В ядре Linux устранена следующая уязвимость:
drivers: staging: rtl8723bs: Исправление блокировки в _rtw_join_timeout_handler()
Коммит 041879b12ddb («drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle()») не только исправил взаимную блокировку (deadlock), но и изменил функцию _rtw_join_timeout_handler(), чтобы она использовала spin_[un]lock_irq() вместо spin_[un]lock_bh().
Функция _rtw_join_timeout_handler() вызывает rtw_do_join(), которая захватывает pmlmepriv->scanned_queue.lock с помощью spin_[un]lock_bh(). Этот вызов spin_unlock_bh() повторно включает softirq, что приводит к ошибке (oops) в kernel/softirq.c: __local_bh_enable_ip() при выполнении lockdep_assert_irqs_enabled():
[ 244.506087] WARNING: CPU: 2 PID: 0 at kernel/softirq.c:376 __local_bh_enable_ip+0xa6/0x100
... [ 244.509022] Call Trace:
[ 244.509048] <IRQ>
[ 244.509100] _rtw_join_timeout_handler+0x134/0x170 [r8723bs]
[ 244.509468] ? __pfx__rtw_join_timeout_handler+0x10/0x10 [r8723bs]
[ 244.509772] ? __pfx__rtw_join_timeout_handler+0x10/0x10 [r8723bs]
[ 244.510076] call_timer_fn+0x95/0x2a0
[ 244.510200] __run_timers.part.0+0x1da/0x2d0
Эта ошибка (oops) вызвана переходом на spin_[un]lock_irq(), который отключает прерывания (IRQs) на протяжении всего времени выполнения _rtw_join_timeout_handler().
Отключение IRQ не является необходимым, поскольку весь код, использующий эту блокировку, выполняется либо в контексте пользователя, либо из softirq. Для исправления этой проблемы следует вернуться к использованию spin_[un]lock_bh().
If you want to get best quality of vulnerability data, you may have to visit VulDB.