diff options
| author | Vegard Nossum <vegard.nossum@gmail.com> | 2008-02-22 19:23:58 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-02-26 12:55:58 +0100 | 
| commit | 1650743cdc0db73478f72c57544ce79ea8f3dda6 (patch) | |
| tree | 14d6218acfc06a20450cf80365a1854af4c096b0 /arch/x86/kernel/stacktrace.c | |
| parent | ed2b7e2b1d1ae201afe8fbd111632074b7b53ed4 (diff) | |
| download | olio-linux-3.10-1650743cdc0db73478f72c57544ce79ea8f3dda6.tar.xz olio-linux-3.10-1650743cdc0db73478f72c57544ce79ea8f3dda6.zip  | |
x86: don't save unreliable stack trace entries
Currently, there is no way for print_stack_trace() to determine whether
a given stack trace entry was deemed reliable or not, simply because
save_stack_trace() does not record this information. (Perhaps needless
to say, this makes the saved stack traces A LOT harder to read, and
probably with no other benefits, since debugging features that use
save_stack_trace() most likely also require frame pointers, etc.)
This patch reverts to the old behaviour of only recording the reliable trace
entries for saved stack traces.
Signed-off-by: Vegard Nossum <vegardno@ifi.uio.no>
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/stacktrace.c')
| -rw-r--r-- | arch/x86/kernel/stacktrace.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c index 02f0f61f5b1..c28c342c162 100644 --- a/arch/x86/kernel/stacktrace.c +++ b/arch/x86/kernel/stacktrace.c @@ -25,6 +25,8 @@ static int save_stack_stack(void *data, char *name)  static void save_stack_address(void *data, unsigned long addr, int reliable)  {  	struct stack_trace *trace = data; +	if (!reliable) +		return;  	if (trace->skip > 0) {  		trace->skip--;  		return; @@ -37,6 +39,8 @@ static void  save_stack_address_nosched(void *data, unsigned long addr, int reliable)  {  	struct stack_trace *trace = (struct stack_trace *)data; +	if (!reliable) +		return;  	if (in_sched_functions(addr))  		return;  	if (trace->skip > 0) {  |