CVE-2026-64590 in Linux
요약
\~에 의해 VulDB • 2026. 08. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
dma-buf/udmabuf: 캐시라인 EEXIST 경고 수정을 위해 중복된 CPU 동기화 건너뛰기
CONFIG_DMA_API_DEBUG_SG가 활성화되어 있을 때, udmabuf를 DRM 드라이버(예: GNOME Videos / Showtime의 비디오 재생용 amdgpu)로 가져오면 잘못된(spurious) 경고를 발생시킵니다.
DMA-API: amdgpu 0000:03:00.0: 캐시라인 추적 EEXIST, \ 중복 매핑은 지원되지 않음 WARNING: kernel/dma/debug.c:619 at add_dma_entry+0x473/0x5f0
호출 체인은 다음과 같습니다:
amdgpu_cs_ioctl -> amdgpu_ttm_backend_bind -> dma_buf_map_attachment -> [udmabuf] map_udmabuf -> get_sg_table
-> dma_map_sgtable(dev, sg, direction, 0) // attrs=0 -> debug_dma_map_sg -> add_dma_entry -> EEXIST
이 문제는 udmabuf가 sg_set_folio()를 통해 페이지별 산만-수집(scatter-gather) 목록을 구성하기 때문에 발생합니다. begin_cpu_udmabuf()에서 이미 misc 장치용으로 매핑된 sg 테이블을 생성한 상태에서, amdgpu와 같은 가져오기(importer)가 map_udmabuf()를 통해 동일한 페이지들을 자체 장치용으로 다시 매핑하면, DMA 디버그 인프라는 물리 주소가 캐시라인 경계를 공유하는 두 개의 활성 매핑을 감지하고 중복에 대해 경고합니다.
DMA_ATTR_SKIP_CPU_SYNC 플래그는 add_dma_entry()에서 이 검사를 억제하는데, 이는 맵/언맵 시 CPU 캐시 유지 작업이 수행되지 않아 캐시라인 중복이 무해함을 나타내기 때문입니다.
기타 주요 dma-buf 내보내기는 이미 해당 플래그를 전달합니다: - drm_gem_map_dma_buf(): DMA_ATTR_SKIP_CPU_SYNC 전달 - amdgpu_dma_buf_map(): DMA_ATTR_SKIP_CPU_SYNC 전달
udmabuf의 경우 맵/언맵 시점에서의 CPU 동기화도 중복됩니다. begin_cpu_udmabuf()와 end_cpu_udmabuf()는 이미 dma-buf 인터페이스를 통해 CPU 접근이 요청될 때 dma_sync_sgtable_for_cpu/device()를 사용하여 명시적인 캐시 동기를 수행합니다.
udmabuf에서 dma_map_sgtable() 및 dma_unmap_sgtable()에 DMA_ATTR_SKIP_CPU_SYNC를 전달하여 잘못된 경고를 억제하고 중복된 동기화를 건너뜁니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.