Description
In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: fix aperture mapping leak amdgpu_pci_remove() calls drm_dev_unplug() before invoking the driver fini routines. This causes drm_dev_enter() in amdgpu_ttm_fini() to always return false, so iounmap(aper_base_kaddr) never runs on normal driver unload, leaving an orphaned entry in the x86 PAT interval tree. On connected_to_cpu hardware, the aperture is mapped write-back (WB) via ioremap_cache(). On reload, IP discovery calls memremap(..., MEMREMAP_WC) over the same range. The WC vs WB conflict causes: ioremap error for 0x..., requested 0x1, got 0x0 amdgpu: discovery failed: -2 Fix by switching to devres-managed mappings so cleanup is guaranteed regardless of drm_dev_enter() state: - connected_to_cpu path: devm_memremap(MEMREMAP_WB). For IORESOURCE_SYSTEM_RAM ranges this takes the try_ram_remap() shortcut, returning __va(offset) from the existing kernel direct map. No new ioremap VA or PAT entry is created, so there is nothing to orphan. - dGPU path: devm_ioremap_wc() registers iounmap() as a devres action, guaranteeing cleanup at device_del() time. Also remove iounmap(aper_base_kaddr) from amdgpu_device_unmap_mmio() since the mapping is now devres-owned. v2: Remove redundant x86_64 guard (Lijo) (cherry picked from commit d871e99879cb5fd1fa798b006b4888887e63a17a)
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
9d0af8b4def0de6b734ec8db08e96da0458facb6 to < 8cf4724ea4f23c438af87a6cd0582a3372d30da9affected9d0af8b4def0de6b734ec8db08e96da0458facb6 to < 67bc3647e418e23dc0d17604bdba634a73de809faffected9d0af8b4def0de6b734ec8db08e96da0458facb6 to < a343d028ad6c174da8dc6af560c51e6d140a6727affected9d0af8b4def0de6b734ec8db08e96da0458facb6 to < 6405c4e75b3bcf0e72bd7a0ff5f1ed0c475e23aaaffected9d0af8b4def0de6b734ec8db08e96da0458facb6 to < f5988b5c300a32ff751724ffd33d5a8d5873e4a7affected9d0af8b4def0de6b734ec8db08e96da0458facb6 to < ea772a440d56b285f4d491affac50ecd41f6b402affected
Linux Linux
Default version status: affected
5.13affected0 to < 5.13unaffected6.1.191 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/8cf4724ea4f23c438af87a6cd0582a3372d30da9 ↗
- https://git.kernel.org/stable/c/67bc3647e418e23dc0d17604bdba634a73de809f ↗
- https://git.kernel.org/stable/c/a343d028ad6c174da8dc6af560c51e6d140a6727 ↗
- https://git.kernel.org/stable/c/6405c4e75b3bcf0e72bd7a0ff5f1ed0c475e23aa ↗
- https://git.kernel.org/stable/c/f5988b5c300a32ff751724ffd33d5a8d5873e4a7 ↗
- https://git.kernel.org/stable/c/ea772a440d56b285f4d491affac50ecd41f6b402 ↗