perf: Fix arch_perf_out_copy_user default
The arch_perf_output_copy_user() default of __copy_from_user_inatomic() returns bytes not copied, while all other argument functions given DEFINE_OUTPUT_COPY() return bytes copied. Since copy_from_user_nmi() is the odd duck out by returning bytes copied where all other *copy_{to,from}* functions return bytes not copied, change it over and ammend DEFINE_OUTPUT_COPY() to expect bytes not copied. Oddly enough DEFINE_OUTPUT_COPY() already returned bytes not copied while expecting its worker functions to return bytes copied. Signed-off-by: Peter Zijlstra <peterz@infradead.org> Acked-by: will.deacon@arm.com Cc: Frederic Weisbecker <fweisbec@gmail.com> Link: http://lkml.kernel.org/r/20131030201622.GR16117@laptop.programming.kicks-ass.net Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

zatwierdzone przez
Ingo Molnar

rodzic
394570b793
commit
0a196848ca
@@ -47,7 +47,7 @@ dump_user_backtrace_32(struct stack_frame_ia32 *head)
|
||||
unsigned long bytes;
|
||||
|
||||
bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
|
||||
if (bytes != sizeof(bufhead))
|
||||
if (bytes != 0)
|
||||
return NULL;
|
||||
|
||||
fp = (struct stack_frame_ia32 *) compat_ptr(bufhead[0].next_frame);
|
||||
@@ -93,7 +93,7 @@ static struct stack_frame *dump_user_backtrace(struct stack_frame *head)
|
||||
unsigned long bytes;
|
||||
|
||||
bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
|
||||
if (bytes != sizeof(bufhead))
|
||||
if (bytes != 0)
|
||||
return NULL;
|
||||
|
||||
oprofile_add_trace(bufhead[0].return_address);
|
||||
|
Reference in New Issue
Block a user