android_kernel_xiaomi_sm8350/drivers/oprofile
Philippe Elie df9d177aa2 oProfile: oops when profile_pc() returns ~0LU
Instruction pointer returned by profile_pc() can be a random value.  This
break the assumption than we can safely set struct op_sample.eip field to a
magic value to signal to the per-cpu buffer reader side special event like
task switch ending up in a segfault in get_task_mm() when profile_pc()
return ~0UL.  Fixed by sanitizing the sampled eip and reject/log invalid
eip.

Problem reported by Sami Farin, patch tested by him.

Signed-off-by: Philippe Elie <phil.el@wanadoo.fr>
Tested-by: Sami Farin <safari-kernel@safari.iki.fi>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-11-14 18:45:37 -08:00
..
buffer_sync.c [CELL] oprofile: add support to OProfile for profiling CELL BE SPUs 2007-07-20 21:42:24 +02:00
buffer_sync.h
cpu_buffer.c oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
cpu_buffer.h oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
event_buffer.c
event_buffer.h [CELL] oprofile: add support to OProfile for profiling CELL BE SPUs 2007-07-20 21:42:24 +02:00
oprof.c [CELL] oprofile: add support to OProfile for profiling CELL BE SPUs 2007-07-20 21:42:24 +02:00
oprof.h
oprofile_files.c
oprofile_stats.c oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
oprofile_stats.h
oprofilefs.c
timer_int.c