diff options
| author | Russell King <rmk@flint.arm.linux.org.uk> | 2005-01-16 19:32:46 +0000 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2005-01-16 19:32:46 +0000 |
| commit | 61642e3e074b78e62093cca39590b76dee6063dd (patch) | |
| tree | b4d5c6aa5a05696d36fcbcaa6aad1908b118b497 | |
| parent | bfc52a39f05cf3c661d9b0ca5a98aef6e6a97f50 (diff) | |
[ARM] Fix profile_pc() for SMP
profile_pc() used thread_saved_fp() with the current task. However,
thread_saved_fp() only returns sane values when called for threads
which are presently sleeping, so this caused an oops. Instead, use
regs->ARM_fp, which correspond with the frame pointer.
| -rw-r--r-- | arch/arm/kernel/time.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index a46efa25f34b..3c92fe6f5acf 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -63,7 +63,7 @@ unsigned long profile_pc(struct pt_regs *regs) unsigned long fp, pc = instruction_pointer(regs); if (in_lock_functions(pc)) { - fp = thread_saved_fp(current); + fp = regs->ARM_fp; pc = pc_pointer(((unsigned long *)fp)[-1]); } |
