🇰🇷 한글 설명
Linux 커널의 sun6i-dma 드라이버에서 DMA 전송 종료 시 활성 디스크립터가 제대로 회수되지 않는 취약점이 발견되었습니다. 기존에는 순환형 디스크립터만 처리되어 비순환형 디스크립터와 LLI 체인이 메모리에 누수되는 문제가 있었으나, vchan_terminate_vdesc()를 사용하여 이를 해결했습니다.
💡 쉬운 설명
데이터를 옮기는 작업이 끝날 때 사용했던 메모리 기록지를 제대로 치우지 않아 메모리가 계속 쌓이는 문제가 있었습니다. 이로 인해 시스템의 메모리가 조금씩 부족해질 수 있는 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dmaengine: sun6i-dma: Fix reclaim descriptors while terminating DMA
When terminating DMA transfers, active descriptors are not properly
reclaimed. Only cyclic descriptors were handled, leaving non-cyclic
descriptors and their LLI chains to be permanently leaked.
Fix by using vchan_terminate_vdesc() which handles both cyclic and
non-cyclic descriptors by adding them to desc_terminated queue for
proper cleanup.
Add pchan->desc != pchan->done check to prevent double-adding completed
descriptors, which would corrupt the list.
📍 영향받는 시스템
Linux kernel (sun6i-dma 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 의도적으로 DMA 전송을 반복적으로 종료하여 시스템 메모리 누수를 유발할 수 있음
🛡️ 대응 방법
sun6i-dma 관련 수정 사항이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 버전인지 확인