Commit 721017cf authored by Chris Wilson's avatar Chris Wilson Committed by Rodrigo Vivi

drm/i915/gem: Ignore readonly failures when updating relocs

If the user passes in a readonly reloc[], by the time we notice we have
already committed to modifying the execobjects, or have indeed done so
already. Reporting the failure just compounds the issue as we have no
second pass to fall back to anymore.

"Be damned if you do, and damned if you don't."

Testcase: igt/gem_exec_reloc/readonly
Fixes: 7dc8f114 ("drm/i915/gem: Drop relocation slowpath")
References: fddcd00a ("drm/i915: Force the slow path after a user-write error")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: default avatarAndi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200331162150.3635-1-chris@chris-wilson.co.uk
(cherry picked from commit 97a37c91)
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 0b72a251
...@@ -1477,10 +1477,8 @@ static int eb_relocate_vma(struct i915_execbuffer *eb, struct eb_vma *ev) ...@@ -1477,10 +1477,8 @@ static int eb_relocate_vma(struct i915_execbuffer *eb, struct eb_vma *ev)
* can read from this userspace address. * can read from this userspace address.
*/ */
offset = gen8_canonical_addr(offset & ~UPDATE); offset = gen8_canonical_addr(offset & ~UPDATE);
if (unlikely(__put_user(offset, &urelocs[r-stack].presumed_offset))) { __put_user(offset,
remain = -EFAULT; &urelocs[r - stack].presumed_offset);
goto out;
}
} }
} while (r++, --count); } while (r++, --count);
urelocs += ARRAY_SIZE(stack); urelocs += ARRAY_SIZE(stack);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment