CVE-2026-45910 in Linux
요약
\~에 의해 VulDB • 2026. 06. 01.
리눅스 커널에서 다음 취약점이 해결되었습니다:
RDMA/rxe: QP 타이머 핸들러의 Race Condition 수정
다음과 같은 경고 메시지를 확인했습니다: WARNING: drivers/infiniband/sw/rxe/rxe_task.c:249 at rxe_sched_task+0x1c8/0x238 [rdma_rxe], CPU#0: swapper/0/0
... libsha1 [last unloaded: ip6_udp_tunnel]
CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G C 6.19.0-rc5-64k-v8+ #37 PREEMPT Tainted: [C]=CRAP
Hardware name: Raspberry Pi 4 Model B Rev 1.2 Call trace: rxe_sched_task+0x1c8/0x238 [rdma_rxe] (P)
retransmit_timer+0x130/0x188 [rdma_rxe]
call_timer_fn+0x68/0x4d0 __run_timers+0x630/0x888 ... WARNING: drivers/infiniband/sw/rxe/rxe_task.c:38 at rxe_sched_task+0x1c0/0x238 [rdma_rxe], CPU#0: swapper/0/0
... WARNING: drivers/infiniband/sw/rxe/rxe_task.c:111 at do_work+0x488/0x5c8 [rdma_rxe], CPU#3: kworker/u17:4/93400
... refcount_t: underflow; use-after-free. WARNING: lib/refcount.c:28 at refcount_warn_saturate+0x138/0x1a0, CPU#3: kworker/u17:4/93400
이 문제는 retransmit_timer()와 rxe_destroy_qp() 사이의 Race Condition으로 인해 발생하며, 타이머 핸들러 실행 중 Queue Pair(QP)의 참조 카운트가 0으로 떨어지는 결과를 초래합니다.
이 경고는 rxe_qp_do_cleanup()이 모든 대기 중인 타이머와 요청을 플러시(flush)하기 때문에 무해한 것으로 보입니다.
문제를 유발하는 흐름의 예:
CPU0 CPU1 retransmit_timer() {
spin_lock_irqsave rxe_destroy_qp() __rxe_cleanup() __rxe_put() // qp->ref_count가 0으로 감소 rxe_qp_do_cleanup() {
if (qp->valid) {
rxe_sched_task() {
WARN_ON(rxe_read(task->qp) <= 0); } } spin_unlock_irqrestore } spin_lock_irqsave qp->valid = 0 spin_unlock_irqrestore }
rxe_get(qp) 호출과 사용 후 대응되는 rxe_put(qp) 호출을 추가하여 타이머 콜백 내에서 QP의 참조 카운트를 유지하고 유효성을 검사합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.