On 4/24/19 9:22 AM, Peter Zijlstra wrote: > On Wed, Apr 24, 2019 at 11:03:57AM -0500, Josh Poimboeuf wrote: >> On Wed, Apr 17, 2019 at 08:41:34AM -0700, Randy Dunlap wrote: > >>> on x86_64: >>> >>> CC drivers/gpu/drm/i915/i915_gem_execbuffer.o >>> drivers/gpu/drm/i915/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x18: redundant UACCESS disable > >> I haven't looked at this, do you know if this is the same issue as the >> other note from Randy, or something else? > > That smells like the below commit went missing... But I cannot reproduce > when building next/master myself. > This patch is already in linux-next of today & of the reported "problem." > --- > commit 8f4faed01e3015955801c8ef066ec7fd7a8b3902 > Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Date: Thu Feb 28 13:52:31 2019 +0100 > > i915, uaccess: Fix redundant CLAC > > New tooling noticed this: > > drivers/gpu/drm/i915/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x3c: redundant UACCESS disable > drivers/gpu/drm/i915/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x66: redundant UACCESS disable > > You don't need user_access_end() if user_access_begin() fails. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > Cc: Borislav Petkov <bp@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> > > diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c > index 02adcaf6ebea..16f80a448820 100644 > --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c > +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c > @@ -1667,6 +1667,7 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb) > len)) { > end_user: > user_access_end(); > +end: > kvfree(relocs); > err = -EFAULT; > goto err; > @@ -1686,7 +1687,7 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb) > * relocations were valid. > */ > if (!user_access_begin(urelocs, size)) > - goto end_user; > + goto end; > > for (copied = 0; copied < nreloc; copied++) > unsafe_put_user(-1, > @@ -2695,7 +2696,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data, > * when we did the "copy_from_user()" above. > */ > if (!user_access_begin(user_exec_list, count * sizeof(*user_exec_list))) > - goto end_user; > + goto end; > > for (i = 0; i < args->buffer_count; i++) { > if (!(exec2_list[i].offset & UPDATE)) > @@ -2709,6 +2710,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data, > } > end_user: > user_access_end(); > +end:; > } > > args->flags &= ~__I915_EXEC_UNKNOWN_FLAGS; > -- ~Randy