]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/gpusvm: Force unmapping on error in drm_gpusvm_get_pages
authorMatthew Brost <matthew.brost@intel.com>
Fri, 30 Jan 2026 19:49:27 +0000 (11:49 -0800)
committerMatthew Brost <matthew.brost@intel.com>
Wed, 4 Feb 2026 19:22:49 +0000 (11:22 -0800)
drm_gpusvm_get_pages() only sets the local flags prior to committing the
pages. If an error occurs mid-mapping, has_dma_mapping will be clear,
causing the unmap function to skip unmapping pages that were
successfully mapped before the error. Fix this by forcibly setting
has_dma_mapping in the error path to ensure all previously mapped pages
are properly unmapped.

Fixes: 99624bdff867 ("drm/gpusvm: Add support for GPU Shared Virtual Memory")
Cc: stable@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Francois Dugast <francois.dugast@intel.com>
Link: https://patch.msgid.link/20260130194928.3255613-2-matthew.brost@intel.com
drivers/gpu/drm/drm_gpusvm.c

index aa9a0b60e727ec0ab85dd19bccc2f538a466b045..d733599ceb9a04a273af4084d9615afb0ddbd009 100644 (file)
@@ -1572,6 +1572,7 @@ set_seqno:
        return 0;
 
 err_unmap:
+       svm_pages->flags.has_dma_mapping = true;
        __drm_gpusvm_unmap_pages(gpusvm, svm_pages, num_dma_mapped);
        drm_gpusvm_notifier_unlock(gpusvm);
 err_free: