]> exis.tech > repos - linux.git/commit
drm/gpusvm: do not route system pages to device_unmap() on IOVA unmap
authorHonglei Huang <honghuan@amd.com>
Wed, 1 Jul 2026 06:27:59 +0000 (14:27 +0800)
committerMatthew Brost <matthew.brost@intel.com>
Tue, 14 Jul 2026 16:27:31 +0000 (09:27 -0700)
commitea2f9985aa4adeef89e9523be295633bb3d0874a
treec83dd5d9a578ec7078a43e708698b25dfd6f5f1c
parent0bc7c196f3ab855da0879283ba633c4c51ddfd81
drm/gpusvm: do not route system pages to device_unmap() on IOVA unmap

In a mixed range: ctx->allow_mixed dpagemap is not NULL while some entries
are system pages. The unmap loop used:

        dma_unmap_page(...);
    else if (dpagemap && dpagemap->ops->device_unmap)
        dpagemap->ops->device_unmap(...);

When use_iova is true the first condition is false for system pages,
so they fall through to device_unmap() and a system DMA address is
handed to the device specific unmap callback, risking invalid accesses
or state corruption.

Key the branch off addr->proto instead: system pages only need an explicit
dma_unmap_page() in the non IOVA case, IOVA system pages are already torn
down by the single dma_iova_destroy(), and only genuine device pages
reach device_unmap().

This issue was found by Sashiko AI review.

Fixes: 37ad039fb367 ("drm/gpusvm: Use dma-map IOVA alloc, link, and sync API in GPU SVM")
Cc: stable@vger.kernel.org
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Honglei Huang <honghuan@amd.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260701062800.409248-3-honghuan@amd.com
drivers/gpu/drm/drm_gpusvm.c