🇰🇷 한글 설명
Linux 커널의 mt76/mt7915 Wi-Fi 드라이버에서 MT7916 칩을 사용할 때 모듈을 언로드하면 rx napi를 비활성화하지 않아 __netif_napi_del_locked()와 page_pool_disable_direct_recycling()에서 경고가 발생하고 모듈 재삽입 후 시스템이 불안정해지는 문제가 있었습니다. 이를 해결하기 위해 mt7915 드라이버 내부에서 rx napi를 명시적으로 비활성화하도록 수정되었습니다.
💡 쉬운 설명
무선 랜 드라이버를 제거하거나 다시 로드할 때 내부 수신 처리 기능을 제대로 끄지 않아 경고와 시스템 불안정이 생기던 버그입니다. 이번 수정으로 드라이버를 내리는 과정에서 수신 기능이 안전하게 정지됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: mt7915: disable rx napi when removing device
Unloading the mt7915e module with a MT7916 triggers multiples WARN in
__netif_napi_del_locked() and in page_pool_disable_direct_recycling()
because the driver does not disable the napi before destroying it.
This is troublesome since on MT7916 it is required to unload the module
and reinsert it with a different enable_6ghz parameter to change the
frequency. The system generally becomes unstable after reinserting the
module.
Fix it by disabling rx napi inside mt7915e itself, even through napi rx is
enabled in the mt76 generic code. Disabling it in the mt76 generic code
was previously attempted and reverted because napi was disabled too
late and rx handlers could access freed structures. Note that the tx
side is enabled and disabled by the mt76 generic code.
It is disabled in mt7915_stop_hardware() since, unlike
mt7915_unregister_device(), is it also called in the probe path if an
error happens after rx napi is enabled.
📍 영향받는 시스템
MediaTek MT7916 Wi-Fi 칩을 사용하는 mt7915e 드라이버 기반의 수정 전 Linux 커널
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 mt7915e 모듈을 언로드 및 재삽입하여 불안정 상태를 유발할 수 있으며, 원격 공격 경로는 명확하지 않음
🛡️ 대응 방법
패치가 적용된 Linux 커널 버전으로 업데이트하거나 배포판의 커널 보안 업데이트를 설치
🔧 검증 코드
커널 버전을 확인한 뒤 해당 버전이 패치 적용 버전 이후인지 배포판 공지와 대조하고, mt7915e 모듈이 로드되어 있는지 여부로 영향 가능성을 판단
uname -r && lsmod | grep mt7915e