diff options
| -rw-r--r-- | arch/arm/kernel/stacktrace.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 77ef35efaa8d..398d0c0511eb 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c | |||
| @@ -52,21 +52,15 @@ static int save_trace(struct stackframe *frame, void *d) | |||
| 52 | return trace->nr_entries >= trace->max_entries; | 52 | return trace->nr_entries >= trace->max_entries; |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | void save_stack_trace(struct stack_trace *trace, struct task_struct *task) | 55 | void save_stack_trace(struct stack_trace *trace) |
| 56 | { | 56 | { |
| 57 | struct stack_trace_data data; | 57 | struct stack_trace_data data; |
| 58 | unsigned long fp, base; | 58 | unsigned long fp, base; |
| 59 | 59 | ||
| 60 | data.trace = trace; | 60 | data.trace = trace; |
| 61 | data.skip = trace->skip; | 61 | data.skip = trace->skip; |
| 62 | 62 | base = (unsigned long)task_stack_page(current); | |
| 63 | if (task) { | 63 | asm("mov %0, fp" : "=r" (fp)); |
| 64 | base = (unsigned long)task_stack_page(task); | ||
| 65 | fp = 0; /* FIXME */ | ||
| 66 | } else { | ||
| 67 | base = (unsigned long)task_stack_page(current); | ||
| 68 | asm("mov %0, fp" : "=r" (fp)); | ||
| 69 | } | ||
| 70 | 64 | ||
| 71 | walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); | 65 | walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); |
| 72 | } | 66 | } |
