🇰🇷 한글 설명
리눅스 커널의 drm/xe 드라이버에서 xe_dma_buf_init_obj() 함수가 할당 실패 시 사전 할당된 bo(버퍼 오브젝트)를 해제하지 않는 메모리 누수 취약점이 있습니다. 이는 xe_bo_init_locked()의 에러 처리 로직과 충돌하여 bo의 소유권 관리가 불분명해지고, 결과적으로 메모리 누수를 유발합니다.
💡 쉬운 설명
시스템이 특정 그래픽 작업을 처리할 때 메모리를 제대로 정리하지 않아 시간이 지날수록 메모리가 부족해지는 문제가 있습니다. 이는 시스템의 안정성을 저하시키고 성능을 떨어뜨릴 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/xe: Fix bo leak in xe_dma_buf_init_obj() on allocation failure
When drm_gpuvm_resv_object_alloc() fails, the pre-allocated storage bo
is not freed. Add xe_bo_free(storage) before returning the error.
xe_dma_buf_init_obj() calls xe_bo_init_locked(), which frees the bo on
error. Therefore, xe_dma_buf_init_obj() must also free the bo on its own
error paths. Otherwise, since xe_gem_prime_import() cannot distinguish
whether the failure originated from xe_dma_buf_init_obj() or from
xe_bo_init_locked(), it cannot safely decide whether the bo should be
freed.
Add comments documenting the ownership semantics: on success, ownership
of storage is transferred to the returned drm_gem_object; on failure,
storage is freed before returning.
v2: Add comments to explain the free logic.
(cherry picked from commit 78a6c5f899f22338bbf48b44fb8950409c5a69b9)
📍 영향받는 시스템
Linux kernel (drm/xe 드라이버가 포함된 버전)
⚔️ 공격 벡터
할당 실패 시 메모리 누수를 유발하는 내부 커널 로직 오류
🛡️ 대응 방법
리눅스 커널 패치 적용 또는 제조사 제공 보안 업데이트 설치
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인합니다.