CVE-2026-89880 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

리눅스 커널에서 다음 취약점이 해결되었습니다:

media: rtl2832_sdr: start_streaming() 실패 시 URB 및 스트림 버 해제

rtl2832_sdr_start_streaming()은 순서대로 rtl2832_sdr_alloc_stream_bufs(), rtl2832_sdr_alloc_urbs() 및 rtl2832_sdr_submit_urbs()를 호출하며, 뮤텍스를 잠금 해제하고 반환하는 단일 err: 레이블을 공유합니다. alloc_urbs()는 성공하지만 submit_urbs()가 실패하거나, alloc_stream_bufs()가 이미 성공한 후에 alloc_urbs() 자체가 -ENOMEM을 반환할 경우, URB 및/또는 일관된 DMA 스트림 버퍼가 할당된 상태로 유지되며 vb2에 대해 스트리밍이 실패합니다. 이로 인해 다음 VIDIOC_STREAMON에서 두 가지 잠재적 결함이 발생합니다:

1) rtl2832_sdr_alloc_stream_bufs()는 dev->buf_num을 무조건 0으로 재설정하고 dev->buf_list[]/dev->dma_addr[]를 덮어쓰므로, 이전 시도에서 할당된 일관된 DMA 메모리가 영구적으로 누수됩니다.

2) rtl2832_sdr_alloc_urbs()는 dev->urbs_initialized를 절대 재설정하지 않고 증가시키기만 합니다. 두 번째 성공적인 통과 후 urbs_initialized가 MAX_BULK_BUFS를 초과할 수 있으므로, 이후의 rtl2832_sdr_free_urbs()는 urbs_initialized - 1에서 0까지 순회하며 dev->urb_list[] 끝을 넘어 읽어서 usb_free_urb()에 잘못된 포인터를 전달합니다.

stop_streaming()이 이미 수행하는 정리 작업을 반영하십시오: 오류 경로에서는 잠금 해제 전에 rtl2832_sdr_free_urbs() 및 rtl2832_sdr_free_stream_bufs()를 호출하십시오. 두 헬퍼 함수는 멱등성(idempotent)을 가지므로(free_urbs는 urbs_initialized를 종료하고 0으로 설정하며, free_stream_bufs는 URB_BUF에 의해 제어되고 buf_num 카운터를 지움), 부분 실패 경로 및 할당 없는 경로는 여전히 안전합니다.

이슈는 https://sashiko.dev/에서 INV-003 시리즈의 자동화된 검토를 통해 식별되었습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!