CVE-2026-90430 in Linux
요약
\~에 의해 VulDB • 2026. 09. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
iommu/tegra241-cmdqv: LVCMDQ가 완전히 초기화된 후에만 게시(publish)합니다
tegra241_vintf_init_lvcmdq() 함수는 tegra241_vcmdq_alloc_smmu_cmdq()이 vcmdq->cmdq를 구축하기 전에, 새로 할당된 vcmdq 포인터를 vintf->lvcmdqs[] 배열에 저장합니다. 에러 ISR(Interrupt Service Routine)은 해당 cmdq를 역참조하므로, 이 시간 창(window) 동안 래치된 LVCMDQ 에러(예: kexec를 통해 상속받은 에러 등)가 발생하면 tegra241_vintf0_handle_error() 함수는 아직 0으로 초기화된 arm_smmu_cmdq를 __arm_smmu_cmdq_skip_err()로 전달하게 되며, 이는 NULL 큐 레지스터 포인터의 역참조를 초래합니다.
tegra241_vintf_init_lvcmdq()에서의 저장을 제거하고 할당 종료 시점에 vcmdq를 게시하며, ISR에서 smp_load_acquire()와 페어링되는 smp_store_release()를 사용합니다. 이를 통해 ISR은 완전히 구축된 LVCMDQ 또는 NULL을 확인할 수 있습니다.
사용자 소유의 LVCMDQ 할당은 이에 따라 이동되어 tegra241_vcmdq_hw_init_user()가 성공한 후에 vcmdq를 게시합니다. 일반 저장(plain store)을 사용하는 이유는 사용자 VINTF의 lvcmdqs[]에는 잠금 없는 리더(lockless reader)가 없기 때문입니다. 에러 ISR은 오직 VINTF0 배열만 탐색합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.