🇰🇷 한글 설명
Linux 커널의 dpaa2-switch 드라이버에서 dpaa2_switch_rx() 함수의 오류 처리 경로가 잘못되어 있었습니다. Tx용 해제 함수인 dpaa2_switch_free_fd()를 Rx 프레임에 잘못 사용하고 있었으며, 이를 수정하여 오류 시 free_pages()와 kfree_skb()를 적절히 사용하도록 변경되었습니다.
💡 쉬운 설명
네트워크 스위치 드라이버가 오류 상황에서 메모리를 잘못된 방식으로 해제하던 문제입니다. 이번 수정으로 메모리를 올바른 방법으로 정리하도록 바뀌었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dpaa2-switch: fix the error path in dpaa2_switch_rx()
In case of an error in dpaa2_switch_rx(), the dpaa2_switch_free_fd()
function is called in order to free the FD. This is incorrect since the
dpaa2_switch_free_fd() is intended to be used on Tx frame descriptors,
meaning that it expects in the software annotation area of the FD data
to find a valid skb pointer on which to call dev_kfree_skb().
Fix this by extracting the dma_unmap_page() from
dpaa2_switch_build_linear_skb() directly into the dpaa2_switch_rx()
function. This allows us to directly use free_pages() in case of an
error before an SKB was created and kfree_skb() afterwards.
📍 영향받는 시스템
NXP DPAA2 기반 dpaa2-switch 드라이버를 사용하는 Linux 커널 (수정 커밋이 포함된 커널 버전)
⚔️ 공격 벡터
CVSS 점수가 없고 공개 정보가 제한적이므로 확인되지 않았으며, 일반적으로 로컬 또는 네트워크 트래픽 오류 상황에서 잘못된 메모리 해제가 발생할 수 있는 결함입니다.
🛡️ 대응 방법
배포판에서 제공하는 최신 Linux 커널 보안 업데이트를 적용하고 시스템을 재부팅하십시오.
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 해당 수정이 포함된 패치 버전과 비교하여, 같거나 높으면 수정된 것입니다.