CVE-2026-97537 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
Linux 커널에서 다음 취약점이 해결되었습니다:
scsi: qla2xxx: 큐 teardown 시 NULL dma_free 및 비트맵 잠금 수정
qla25xx_free_req_que()와 qla25xx_free_rsp_que()에는 qla25xx_create_{req,rsp}_que()의 오류 경로에서 노출되는 두 가지 기존 버그가 있습니다.
1. queue 생성 중 dma_alloc_coherent()이 실패할 경우, 오류 처리 경로는 req->ring / rsp->ring이 여전히 NULL(kzalloc에서)인 상태로 free 함수를 호출합니다. NULL cpu_addr로 인한 무조건적인 dma_free_coherent()은 정의되지 않은 동작(undefined behavior)이며 시스템 패닉을 유발할 수 있습니다.
2. free 함수는 vport_lock 하에서 req_qid_map / rsp_qid_map을 지우지만, create 함수는 동일한 비트맵에 mq_lock으로 보호를 제공합니다. 이는 상호 배제(mutual exclusion)를 제공하지 않습니다. 또한, create 오류 처리 경로는 free 함수를 호출하기 전에 해당 비트를 지우고 mq_lock을 해제하므로, 다른 스레드가 같은 que_id를 할당하고 그 ha->req_q_map 항목이 free 함수 내의 잠금 없는 NULL 할당으로 인해 손상될 수 있는 시간적 여유(window)가 생성됩니다.
해결 방법:
- ring 포인터에 대한 NULL 체크로 dma_free_coherent()을 감쌉니다. - 모든 생성자가 보유하는 잠금인 mq_lock을 free 함수에서 사용하여 맵 항목을 원자적으로 NULL로 설정하고 비트맵 비트를 지웁니다. - 이제 중복이 된 create 오류 처리 경로에서의 clear_bit 블록들을 제거합니다(free 함수가 이를 원자적으로 처리하기 때문입니다).
Once again VulDB remains the best source for vulnerability data.