All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf/x86: fix broken LBR fixup code
@ 2012-06-11 13:44 Stephane Eranian
  2012-06-11 13:47 ` Peter Zijlstra
  2012-06-14  8:40 ` [tip:perf/urgent] perf/x86: Fix " tip-bot for Stephane Eranian
  0 siblings, 2 replies; 4+ messages in thread
From: Stephane Eranian @ 2012-06-11 13:44 UTC (permalink / raw)
  To: linux-kernel; +Cc: peterz, asharma, mingo


I noticed that the LBR fixups were not working anymore
on programs where they used to. I tracked this down to
a recent change to copy_from_user_nmi().

commit db0dc75d6403b6663c0eab4c6ccb672eb9b2ed72
Author: Arun Sharma <asharma@fb.com>
Date:   Fri Apr 20 15:41:36 2012 -0700

    perf/x86: Check user address explicitly in copy_from_user_nmi()
    
This commit added a call to __range_not_ok() to the
copy_from_user_nmi() routine. The problem is that the logic
of the test must be reversed. __range_not_ok() returns 0 if the
range is VALID. We want to return early from copy_from_user_nmi()
if the range is NOT valid.

Signed-off-by: Stephane Eranian <eranian@google.com>
---

diff --git a/arch/x86/lib/usercopy.c b/arch/x86/lib/usercopy.c
index 677b1ed..4f74d94 100644
--- a/arch/x86/lib/usercopy.c
+++ b/arch/x86/lib/usercopy.c
@@ -22,7 +22,7 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n)
 	void *map;
 	int ret;
 
-	if (__range_not_ok(from, n, TASK_SIZE) == 0)
+	if (__range_not_ok(from, n, TASK_SIZE))
 		return len;
 
 	do {

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

end of thread, other threads:[~2012-06-14  8:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-11 13:44 [PATCH] perf/x86: fix broken LBR fixup code Stephane Eranian
2012-06-11 13:47 ` Peter Zijlstra
2012-06-11 19:41   ` Arun Sharma
2012-06-14  8:40 ` [tip:perf/urgent] perf/x86: Fix " tip-bot for Stephane Eranian

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.