🇰🇷 한글 설명
Linux 커널의 sungem 드라이버에서 장치 등록 실패 시 자원 해제 과정 중 중복 해제가 발생하는 취약점입니다. gem_init_one() 함수가 gem_remove_one()을 호출한 후 자체 정리 라벨을 다시 실행하여 DMA 블록, MMIO 매핑, PCI 영역 등을 이중으로 해제합니다.
💡 쉬운 설명
하드웨어를 설치하는 과정에서 오류가 발생했을 때, 이미 정리된 메모리나 자원을 컴퓨터가 한 번 더 정리하려고 시도하면서 시스템 오류를 일으킬 수 있는 문제입니다. 이는 시스템의 안정성을 해치거나 예기치 않은 동작을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: sungem: fix probe error cleanup
gem_init_one() calls gem_remove_one() when register_netdev() fails.
gem_remove_one() unregisters and frees resources owned by the net_device,
including the DMA block, MMIO mapping, PCI regions, and the net_device
itself. gem_init_one() then falls through to its own cleanup labels and
frees the same resources again.
Keep the register_netdev() error path in gem_init_one(): clear drvdata so
PM/remove paths do not see a half-registered device, remove the NAPI
instance added during probe, and let the existing cleanup labels release
the resources once.
The issue was found by a local static-analysis checker for probe error
paths. The reported path was manually inspected before sending this fix.
Compile-tested with CONFIG_SUNGEM=y. Runtime testing was not performed
because no sungem hardware is available.
📍 영향받는 시스템
Linux kernel (sungem 드라이버가 포함된 버전)
⚔️ 공격 벡터
로컬 환경에서 장치 드라이버 초기화 오류를 유도하여 시스템 불안정성 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인