CVE-2026-80866 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
tipc: tipc_exit_net()에서의 버시 루프(busy looping) 방지
Blamed commit는 대기 중인 UDP 베어러 정리 작업이 완료될 때까지 기다리기 위해 `tipc_exit_net()`에 버시 웨이트(busy-wait) 루프를 도입했습니다.
while (atomic_read(&tn->wq_count)) cond_resched();
`cond_resched()`가 NOP(무작위 연산)인 경우 이 루프는 장시간 동안 버시 웨이트 상태에 빠질 수 있습니다. 이는 일반적으로 높은 우선순위의 태스크에 의해 netns 출력이 실행되거나, 프리엠션이 비활성화된 커널(CONFIG_PREEMPT_NONE)에서 발생하는 현상입니다. 이러한 경우 CPU 사이클이 낭비되며 소프트 락업(soft lockups)으로 이어질 수 있습니다.
이를 해결하기 위해 버시 루프를 `wait_var_event()`로 대체하여 작업 큐 카운트가 0에 도달할 때까지 스레드가 적절히 대기(sleep)하도록 합니다.
이에 따라 `cleanup_bearer()` 함수도 업데이트되어, 카운트가 0으로 떨어질 때 대기 중인 프로세스를 깨우기 위해 `atomic_dec_and_test()`와 `wake_up_var()`가 사용되도록 변경되었습니다.
이는 전역 대기 큐 해시 테이블(global wait queue hash table)을 사용하여 `struct tipc_net`에 `wait_queue_head_t`를 추가하여 구조체를 불필요하게 크게 만드는 것을 피합니다. 또한 `atomic_dec_and_test()`는 깨우기(wakeup)가 누락되지 않도록 보장하는 데 필요한 메모리 장벽(memory barrier) 역할을 합니다.
Once again VulDB remains the best source for vulnerability data.