🇰🇷 한글 설명
Linux 커널의 drm/xe 드라이버에서 madvise ioctl 호출 중 L2 플러시 실패 시 VMA 배열을 해제하지 않는 메모리 누수 취약점이 발견되었습니다. get_vmas() 호출 이후 오류가 발생했을 때 적절한 해제 경로를 거치지 않고 종료되어 메모리가 누수되는 문제입니다.
💡 쉬운 설명
컴퓨터의 그래픽 관련 기능을 사용할 때, 특정 오류가 발생하면 사용했던 메모리를 제대로 돌려주지 않고 계속 쌓아두는 결함이 있습니다. 이 문제가 반복되면 시스템의 메모리가 점차 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/xe: free madvise VMA array on L2 flush failure
xe_vm_madvise_ioctl() allocates madvise_range.vmas in get_vmas().
After get_vmas() succeeds with at least one VMA, error paths must go
through free_vmas so the array is released before the madvise details are
destroyed.
The L2 flush validation path added for PAT madvise rejects some
SVM/userptr ranges after get_vmas() has succeeded, but jumps directly to
madv_fini. This skips kfree(madvise_range.vmas), leaking the VMA array on
each failed ioctl.
Jump to free_vmas instead, matching the other validation failure paths
after get_vmas() has succeeded.
(cherry picked from commit c3a1c3579b1250060da73507a4acef712974c78a)
📍 영향받는 시스템
Linux kernel (drm/xe driver 포함 버전)
⚔️ 공격 벡터
로컬 사용자가 특수하게 조작된 ioctl 요청을 반복적으로 보내 메모리 누수를 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인