CVE-2026-90012 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
spi: 부분적 매핑 실패 시 DMA 매핑 소유권 수정
RX 매핑이 TX 매핑 성공 후에 실패하면, __spi_map_msg()는 TX를 언매핑하지만 tx_sg_mapped 플래그는 설정된 상태로 남습니다. 나중에 다른 전송에서 TX 매핑에 실패할 경우, 이전 전송을 위해 생성된 매appings가 활성화된 상태 그대로 유지됩니다.
두 가지 사례 모두 cur_{tx,rx}_dma_dev 변수가 아직 업데이트되지 않았습니다. 이는 해당 변수들이 모든 전송이 매핑된 후에야 할당되기 때문입니다. 이로 인해 이후 spi_unmap_msg() 호출 시 TX 매핑을 중복으로 언매핑하거나, NULL 또는 stale(구버전/유효하지 않은) 장치를 사용하여 이전 매appings를 해제할 수 있습니다. NULL 장치를 사용하면oops가 발생할 수 있습니다. 빈 SG 테이블은 NULL dereference를 방지하지 않습니다. 왜냐하면 dma_unmap_sg_attrs()는 엔트리 개수를 확인하기 전에 먼저 장치에 접근하기 때문입니다.
매핑 시작 전에 두 가지 매핑 장치를 모두 게시하고, 모든 실패 상황을 __spi_unmap_msg()를 통해 처리합니다. 이렇게 하면 매핑 플래그가 초기화되고 각 매핑이 생성된 장치를 사용하여 한 번만 해제됩니다.
루프 이전에 장치들을 게시하면 전송에 매핑이 필요 없는 경우에도 장치 정보가 갱신됩니다. 이 경우 어떤 매핑 플래지도 설정되지 않으므로, 기존 사용자들은 포인터를 매핑 소유자로 사용하지 않습니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.