CVE-2026-80818 in Linux정보

요약

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

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

iommu/tegra241-cmdqv: teardown 시 CMD_SYNC에 대한 Use-After-Free 수정

arm_smmu_impl_remove()는 arm_smmu_init_queues()가 smmu->cmdq.q.base를 할당하기 전에 arm_smmu_impl_probe()에서 devres 액션으로 등록됩니다. 실패한 probe 또는 unbind와 같은 devres unwind 시, 큐가 먼저 해제되고 그 후 arm_smmu_impl_remove()가 tegra241_cmdqv_remove_vintf()를 실행합니다. 이 함수의 VINTF deinit은 해제된 메모리에서 CMD_SYNC를 발행합니다.

VCMDQ 활성화에 실패하여 impl reset이 실패하고 probe가 devres unwind로 중단되도록 하는 QEMU 해킹을 사용하여 테스트 중에 관찰되었습니다:

platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: 활성화에 실패함, STATUS=0x00000000 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: GERRORN=0x0, GERROR=0x4, CONS=0x0 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: 지워지지 않은 오류 감지, 리셋 중 arm-smmu-v3 arm-smmu-v3.0.auto: impl reset 실패 arm-smmu-v3 arm-smmu-v3.0.auto: 드라이버 arm-smmu-v3로 probe가 -110 오류와 함께 실패함 가상 주소 ffff8000891e0098에서 커널 페이지 요청 처리 불가 ... 내부 오류: Oops: 0000000096000047 [#1] SMP
... Call trace: arm_smmu_cmdq_issue_cmdlist+0x320/0x6fc (P) tegra241_vcmdq_hw_deinit+0x98/0x168 tegra241_vintf_hw_deinit+0x5c/0x1b0 tegra241_cmdqv_remove_vintf+0x34/0xec tegra241_cmdqv_remove+0x40/0x9c arm_smmu_impl_remove+0x20/0x30 devm_action_release+0x14/0x20 devres_release_all+0xa8/0x110 device_unbind_cleanup+0x18/0x84 really_probe+0x1f0/0x29c

tegra241_cmdqv_remove_vintf()에서 VINTF deinit을 제거하여 unwind 시 해제된 큐에 접근하지 않도록 합니다. 대신 더 일찍 VINTFs를 quiesce합니다. device_disable() impl op를 추가하고 CMDQ가 여전히 작동 중인 상태에서 arm_smmu_disable_action()에서 이를 실행합니다. 이는 라이브 unbind 상황을 처리합니다. 리셋 실패는 이미 tegra241_vintf_hw_init()이 자체 오류 경로에서 VINTF deinit을 수행하므로 처리됩니다. tegra241_cmdqv_remove_vintf()은 또한 iommufd viommu destroy 경로에서도 사용되므로, 해당 곳에서도 quiesce합니다.

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

출처

Want to know what is going to be exploited?

We predict KEV entries!