🇰🇷 한글 설명
Linux 커널의 Tegra GPC DMA 하드웨어에서 전송 길이가 설정된 최대 버스트 크기의 배수가 아닐 경우 DMA가 멈추는 취약점이 발견되었습니다. 이를 해결하기 위해 전송 길이를 나누어 떨어지게 하는 가장 큰 2의 거듭제곱 값으로 버스트 크기를 조정하도록 수정되었습니다.
💡 쉬운 설명
데이터를 한 번에 묶어서 보내는 과정에서 데이터 양이 딱 맞지 않으면 시스템이 멈춰버리는 문제가 있었습니다. 이제는 데이터 양에 맞춰 묶음 크기를 자동으로 조절하여 멈춤 현상을 방지합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dmaengine: tegra: Fix burst size calculation
Currently, the Tegra GPC DMA hardware requires the transfer length to
be a multiple of the max burst size configured for the channel. When a
client requests a transfer where the length is not evenly divisible by
the configured max burst size, the DMA hangs with partial burst at
the end.
Fix this by reducing the burst size to the largest power-of-2 value
that evenly divides the transfer length. For example, a 40-byte
transfer with a 16-byte max burst will now use an 8-byte burst
(40 / 8 = 5 complete bursts) instead of causing a hang.
This issue was observed with the PL011 UART driver where TX DMA
transfers of arbitrary lengths were stuck.
📍 영향받는 시스템
Tegra GPC DMA를 사용하는 Linux 커널 기반 시스템 (특히 PL011 UART 드라이버 사용 환경)
⚔️ 공격 벡터
로컬 공격자가 임의의 길이의 UART TX DMA 전송을 유도하여 시스템을 정지(DoS)시킬 수 있음
🛡️ 대응 방법
해당 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인