From: Matthew Brost Date: Tue, 23 Jul 2024 01:02:30 +0000 (-0700) Subject: drm/xe: Fix xe_pt_abort_unbind X-Git-Tag: v6.12-rc1~126^2~25^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=649b93dbb902ae3237fddbe998eb1f4de1a14b71;p=thirdparty%2Flinux.git drm/xe: Fix xe_pt_abort_unbind When restoring the children PT entries on a bind failure the incorrect loop index has used resulting in PT entries being leaked. This is shown by running xe_vm.bind-array-conflict-error-inject on a VRAM device going into a suspend state after the test completes. v2: - s/childern/children (CI, Matt Auld) Fixes: a708f6501c69 ("drm/xe: Update PT layer with better error handling") Cc: Matthew Auld Signed-off-by: Matthew Brost Reviewed-by: Matthew Auld Link: https://patchwork.freedesktop.org/patch/msgid/20240723010230.1652707-1-matthew.brost@intel.com --- diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c index c24e869b7eaea..97a6a0b0b8bad 100644 --- a/drivers/gpu/drm/xe/xe_pt.c +++ b/drivers/gpu/drm/xe/xe_pt.c @@ -1564,7 +1564,7 @@ static void xe_pt_abort_unbind(struct xe_vma *vma, continue; for (j = entry->ofs; j < entry->ofs + entry->qwords; j++) - pt_dir->children[i] = + pt_dir->children[j] = entries[i].pt_entries[j - entry->ofs].pt ? &entries[i].pt_entries[j - entry->ofs].pt->base : NULL; }