🇰🇷 한글 설명
리눅스 커널의 tracing 기능에서 VMA(가상 메모리 영역)가 분할될 때 발생하는 WARN_ON 오류입니다. VMA가 분할되면 ring_buffer_unmap()이 중복 호출되어 -ENODEV를 반환하며 커널 경고를 발생시킵니다. 이를 해결하기 위해 VMA 분할을 방지하는 may_split 콜백을 추가하여 수정되었습니다.
💡 쉬운 설명
리눅스 시스템의 추적 기능을 사용할 때 메모리 관리 방식의 오류로 인해 시스템 경고가 발생하는 문제입니다. 메모리가 쪼개지는 것을 막는 설정을 추가하여 이 경고가 발생하지 않도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tracing: Fix WARN_ON in tracing_buffers_mmap_close for split VMAs
When a VMA is split (e.g., by partial munmap or MAP_FIXED), the kernel
calls vm_ops->close on each portion. For trace buffer mappings, this
results in ring_buffer_unmap() being called multiple times while
ring_buffer_map() was only called once.
This causes ring_buffer_unmap() to return -ENODEV on subsequent calls
because user_mapped is already 0, triggering a WARN_ON.
Trace buffer mappings cannot support partial mappings because the ring
buffer structure requires the complete buffer including the meta page.
Fix this by adding a may_split callback that returns -EINVAL to prevent
VMA splits entirely.
📍 영향받는 시스템
VMA 분할이 가능한 리눅스 커널 버전 (tracing 기능 사용 시)
⚔️ 공격 벡터
로컬 공격자가 메모리 매핑을 의도적으로 분할(munmap 또는 MAP_FIXED 사용)하여 커널 경고를 유도할 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 리눅스 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 버전인지 확인