Unverified Commit 9106713b authored by Thomas Hellström's avatar Thomas Hellström Committed by Rodrigo Vivi
Browse files

drm/xe/userptr: Fix an incorrect assert



The assert incorrectly checks the total length processed which
can in fact be greater than the number of pages. Fix.

Fixes: 0a98219b ("drm/xe/hmm: Don't dereference struct page pointers without notifier lock")
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250307100109.21397-1-thomas.hellstrom@linux.intel.com


(cherry picked from commit 70e5043b)
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 10c79884
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -138,13 +138,17 @@ static int xe_build_sg(struct xe_device *xe, struct hmm_range *range,
		i += size;

		if (unlikely(j == st->nents - 1)) {
			xe_assert(xe, i >= npages);
			if (i > npages)
				size -= (i - npages);

			sg_mark_end(sgl);
		} else {
			xe_assert(xe, i < npages);
		}

		sg_set_page(sgl, page, size << PAGE_SHIFT, 0);
	}
	xe_assert(xe, i == npages);

	return dma_map_sgtable(dev, st, write ? DMA_BIDIRECTIONAL : DMA_TO_DEVICE,
			       DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_NO_KERNEL_MAPPING);