projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
10c7988
)
drm/xe/userptr: Fix an incorrect assert
author
Thomas Hellström
<thomas.hellstrom@linux.intel.com>
Fri, 7 Mar 2025 10:01:09 +0000
(11:01 +0100)
committer
Rodrigo Vivi
<rodrigo.vivi@intel.com>
Mon, 10 Mar 2025 15:42:25 +0000
(11:42 -0400)
The assert incorrectly checks the total length processed which
can in fact be greater than the number of pages. Fix.
Fixes:
0a98219bcc96
("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: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link:
https://patchwork.freedesktop.org/patch/msgid/20250307100109.21397-1-thomas.hellstrom@linux.intel.com
(cherry picked from commit
70e5043ba85eae199b232e39921abd706b5c1fa4
)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_hmm.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/xe/xe_hmm.c
b/drivers/gpu/drm/xe/xe_hmm.c
index
3921025
..
c3cc0fa
100644
(file)
--- a/
drivers/gpu/drm/xe/xe_hmm.c
+++ b/
drivers/gpu/drm/xe/xe_hmm.c
@@
-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);