🇰🇷 한글 설명
Linux 커널의 i40e 드라이버 NAPI 폴 트레이스포인트에서 get_cpu() 호출 후 put_cpu()로 해제하지 않아 preempt count가 누적되는 버그입니다. 이로 인해 소프트 인터럽트 처리 중 preempt count 불일치가 발생하여 시스템 불안정을 야기합니다. smp_processor_id() 사용으로 해결됩니다.
💡 쉬운 설명
Linux 커널의 인텔 네트워크 드라이버에서 CPU 사용을 추적할 때 정리를 빠뜨려 시스템이 불안정해지는 문제입니다. 패치를 적용하면 시스템 안정성이 개선됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
i40e: Fix preempt count leak in napi poll tracepoint
Using get_cpu() in the tracepoint assignment causes an obvious preempt
count leak because nothing invokes put_cpu() to undo it:
softirq: huh, entered softirq 3 NET_RX with preempt_count 00000100, exited with 00000101?
This clearly has seen a lot of testing in the last 3+ years...
Use smp_processor_id() instead.
📍 영향받는 시스템
Linux 커널 3.x ~ 최근 버전의 인텔 i40e 드라이버 (40G 이더넷 어댑터)
⚔️ 공격 벡터
직접 공격 없음 - 일반적인 네트워크 활동 중 자동으로 발생하는 안정성 결함
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트하거나 i40e 드라이버를 수정된 버전으로 패치 적용
🔧 검증 코드
i40e 드라이버 버전과 위치를 확인하여 패치가 적용된 최신 버전인지 검증
modinfo i40e 2>/dev/null | grep -E 'version|filename'