diff options
| author | Honglei Huang <honghuan@amd.com> | 2026-07-01 14:27:59 +0800 |
|---|---|---|
| committer | Matthew Brost <matthew.brost@intel.com> | 2026-07-14 09:27:31 -0700 |
| commit | ea2f9985aa4adeef89e9523be295633bb3d0874a (patch) | |
| tree | c83dd5d9a578ec7078a43e708698b25dfd6f5f1c /scripts/trace | |
| parent | 0bc7c196f3ab855da0879283ba633c4c51ddfd81 (diff) | |
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
Diffstat (limited to 'scripts/trace')
0 files changed, 0 insertions, 0 deletions
