CVE-2026-98965 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 23.

리눅스 커널에서 다음 취약점이 해결되었습니다.

ice: Tx 도어벨에 대한 순서 보장 MMIO 쓰기 복원

NIC가 전송할 큐잉된 바이트 수를 추적하는 DQL(Dynamic Queue Limits) 계정 상태, 즉 dql->num_queued는 ICE 드라이버가 __netdev_tx_sent_queue()를 호출할 때 업데이트됩니다. 이후 드라이버는 하드웨어 큐 꼬리(tail)를 업데이트하여 NIC가 작업 큐 처리를 시작하도록 합니다. 이 큐 계정 업데이트는 NIC가 디스크립터 전송을 시작하기 전에 순서대로(ordering) 수행되어야 합니다.

현재 전송 경로는 writel_relaxed()를 사용하여 하드웨어 도어벨을 업데이트하는데, 이는(arm64 아키텍처에서) 일반 메모리 쓰기와 MMIO 레지스터 쓰기 간에 writel()이 제공하는 것과 동일한 순서 보장(ordering guarantees)을 제공하지 않습니다. 이로 인해 dql->num_queued 업데이트가 전역적으로 가시화되기 전에 NIC가 디스크립터 전송을 시작하는 잠재적 레이스 컨디션(race condition)이 발생합니다. 만약 NIC가 dql_completed()에 의해 업데이트가 관찰되기 전에 완료되면, 큐잉된 것보다 더 많은 바이트가 완료되었음을 감지하여 유효하지 않은 상태(invalid state)를 탐지합니다. 이 경우 다음 BUG_ON이 트리거됩니다.

BUG_ON(count > num_queued - dql->num_completed);

이는 arm64 머신에서 Intel Corporation Ethernet Controller E810-XXV for SFP(rev 02)를 사용하는 지속적 네트워크 부하 환경에서 다음과 같은 크래시로 관찰되었습니다(트레이스는 간략화됨). 테스트 커널에서 writel_relaxed()를 writel()로 교체하면 이전에 문제 발생을 재현하는 데 성공했던 사용자 워크로드에서의 크래시가 제거되었습니다.

kernel BUG at lib/dynamic_queue_limits.c:99

Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
pc : dql_completed+0x268/0x2a0 lr : ice_clean_tx_irq+0x1d4/0x620 [ice]
Call trace: dql_completed+0x268/0x2a0 (P) ice_napi_poll+0x94/0x520 [ice]
__napi_poll+0x48/0x3f0 net_rx_action+0x194/0x420

이 변경은 ccde82e90946("ice: add E830 Earliest TxTime First Offload support") 커밋 이전의 동작을 복원합니다. 해당 커밋에서 알림 메커니즘이 writel()에서 writel_relaxed()로 변경되었습니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-425722

EPSS

0.00000

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!