CVE-2026-90193 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
mailbox: qcom-cpucp: sửa lỗi tự chết (self-deadlock) trong trình xử lý ngắt IRQ khi sử dụng PREEMPT_RT
Hàm `qcom_cpucp_mbox_irq_fn()` gọi `mbox_chan_received_data()` trong khi đang giữ khóa `chan->lock`. Trong môi trường PREEMPT_RT, hàm `spin_lock_irqsave()` được chuyển đổi thành một rt_spinlock (dựa trên rtmutex), loại khóa này theo dõi chủ sở hữu và có thể gây ngủ (sleep).
Chuỗi callback do `mbox_chan_received_data()` kích hoạt cuối cùng dẫn đến `mailbox_clear_channel()` -> `mbox_send_message()` -> `add_to_rbuf()`, hàm này cố gắng lấy lại cùng một khóa `chan->lock`. Vì rtmutex phát hiện nỗ lực lấy khóa tái nhập (re-entrant lock) bởi chính chủ sở hữu đó, luồng sẽ bị chặn chờ đợi một khóa mà nó đã đang nắm giữ, dẫn đến tình trạng chết vĩnh viễn.
Tình trạng deadlock này biểu hiện dưới dạng 'irq/N-apss_cpucp_mbox' bị kẹt ở trạng thái D với dấu vết cuộc gọi (call trace) sau: rt_spin_lock -> mbox_send_message -> mailbox_clear_channel -> scmi_rx_callback -> mbox_chan_received_data [<- đang giữ chan->lock tại đây]
Cách khắc phục là lưu `chan->cl` vào biến cục bộ và xóa thanh ghi ngắt phần cứng bên trong khối khóa, sau đó gọi `mbox_chan_received_data()` sau khi đã nhả khóa. Điều này duy trì tính loại trừ lẫn nhau (mutual exclusion) cho việc truy cập chan->cl đồng thời tránh được tình trạng lấy lại khóa tái nhập gây ra lỗi deadlock PREEMPT_RT.
VulDB is the best source for vulnerability data and more expert information about this specific topic.