CVE-2026-90241 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
리눅스 커널에서 다음 취약점이 해결되었습니다:
iommu/vt-d: probe 실패 시 확장 모드 컨텍스트 해제
intel_pasid_setup_sm_context()는 pci_for_each_dma_alias()를 통해 PCI 장치의 DMA 별칭을 순회하며, 각 RID(요청자 ID)에 대해 확장 모드 컨텍스트 엔트리를 프로그래밍합니다. dma_alias_mask가 있는 장치의 경우, 콜백은 장치 자체의 RID와 각각의 별칭 비트마다 동일한 pci_dev로 호출되므로 device_pasid_table_setup()이 여러 RID에서 실행됩니다.
pci_for_each_dma_alias()는 첫 번째 콜백 오류에서 중단됩니다. 따라서 순회 중 중간에 실패하면 이미 처리된 RID에 대한 컨텍스트 엔트리가 남아 있고 여전히 장치의 PASID 테이블을 가리키는 상태가 될 수 있습니다.
이러한 에러 경로에서 intel_iommu_probe_device()는 현재 직접적으로 intel_pasid_free_table()로 점프하여, 먼저 해당 컨텍스트 엔트리를 해제하지 않고 PASID 테이블만 해제합니다. 이로 인해 IOMMU는 존재하는(Present) 컨텍스트 엔트리를 순회하게 되며, 이 엔트리의 PASID 테이블 포인터가 이미 해제된 메모리를 참조할 수 있습니다.
intel_iommu_release_device()는 이미 테이블을 해제하기 전에 teardown(해제 작업)을 수행합니다. probe 실패 경로에도 동일한 순서를 적용하십시오.
device_pasid_table_teardown()은 프로그래밍되지 않은 RID를 안전하게 처리합니다: iommu_context_addr()는 컨텍스트 테이블이 할당되지 않았을 경우 NULL을 반환하며, 이미 비-present(non-present)인 엔트리의 Present 비트를 지우는 것은 무작위 연산(no-op)입니다. 따라서 실패한 별칭과 아직 도달하지 않은 모든 별칭에 대해 unwind(되돌리기)가 안전합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.