All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path
@ 2019-07-25 20:29 Josh Poimboeuf
  2019-07-25 21:55   ` Thomas Gleixner
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Josh Poimboeuf @ 2019-07-25 20:29 UTC (permalink / raw)
  To: intel-gfx, dri-devel
  Cc: linux-kernel, Chris Wilson, Peter Zijlstra, Thomas Gleixner,
	Linus Torvalds, Sedat Dilek, Nick Desaulniers, Nathan Chancellor,
	Arnd Bergmann

Objtool reports:

  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable

__copy_from_user() already does both STAC and CLAC, so the
user_access_end() in its error path adds an extra unnecessary CLAC.

Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/617
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
---
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    | 20 +++++++++----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 5fae0e50aad0..41dab9ea33cd 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1628,6 +1628,7 @@ static int check_relocations(const struct drm_i915_gem_exec_object2 *entry)
 
 static int eb_copy_relocations(const struct i915_execbuffer *eb)
 {
+	struct drm_i915_gem_relocation_entry *relocs;
 	const unsigned int count = eb->buffer_count;
 	unsigned int i;
 	int err;
@@ -1635,7 +1636,6 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
 	for (i = 0; i < count; i++) {
 		const unsigned int nreloc = eb->exec[i].relocation_count;
 		struct drm_i915_gem_relocation_entry __user *urelocs;
-		struct drm_i915_gem_relocation_entry *relocs;
 		unsigned long size;
 		unsigned long copied;
 
@@ -1663,14 +1663,8 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
 
 			if (__copy_from_user((char *)relocs + copied,
 					     (char __user *)urelocs + copied,
-					     len)) {
-end_user:
-				user_access_end();
-end:
-				kvfree(relocs);
-				err = -EFAULT;
-				goto err;
-			}
+					     len))
+				goto end;
 
 			copied += len;
 		} while (copied < size);
@@ -1699,10 +1693,14 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
 
 	return 0;
 
+end_user:
+	user_access_end();
+end:
+	kvfree(relocs);
+	err = -EFAULT;
 err:
 	while (i--) {
-		struct drm_i915_gem_relocation_entry *relocs =
-			u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
+		relocs = u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
 		if (eb->exec[i].relocation_count)
 			kvfree(relocs);
 	}
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2019-08-10  5:59 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-25 20:29 [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path Josh Poimboeuf
2019-07-25 21:55 ` Thomas Gleixner
2019-07-25 21:55   ` Thomas Gleixner
2019-07-26 19:05   ` Chris Wilson
2019-07-26 19:18     ` Thomas Gleixner
2019-07-26 19:30       ` Chris Wilson
2019-07-31 12:25         ` Sedat Dilek
2019-08-05 19:29           ` Sedat Dilek
2019-08-06 12:59             ` Josh Poimboeuf
2019-08-06 12:59               ` Josh Poimboeuf
2019-08-08 20:14               ` Nick Desaulniers
2019-08-08 20:21                 ` Thomas Gleixner
2019-08-08 20:21                   ` Thomas Gleixner
2019-08-08 23:02                   ` Nick Desaulniers
2019-08-09 20:19                     ` Sedat Dilek
2019-08-10  5:59                       ` Thomas Gleixner
2019-08-10  5:59                         ` Thomas Gleixner
2019-07-25 22:18 ` ✓ Fi.CI.BAT: success for " Patchwork
2019-07-26 14:46 ` ✓ Fi.CI.IGT: " Patchwork
2019-08-09 21:16 ` [tip:core/urgent] " tip-bot for Josh Poimboeuf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.