aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/arch/x86/kernel/dumpstack.h
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2010-04-29 09:36:24 +0200
committerJens Axboe <jens.axboe@oracle.com>2010-04-29 09:36:24 +0200
commit7407cf355fdf5500430be966dbbde84a27293bad (patch)
tree922861288ff38558ed721a79653f52b17b13bb95 /arch/x86/kernel/dumpstack.h
parentnilfs: fix breakage caused by barrier flag changes (diff)
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 (diff)
downloadwireguard-linux-7407cf355fdf5500430be966dbbde84a27293bad.tar.xz
wireguard-linux-7407cf355fdf5500430be966dbbde84a27293bad.zip
Merge branch 'master' into for-2.6.35
Conflicts: fs/block_dev.c Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'arch/x86/kernel/dumpstack.h')
-rw-r--r--arch/x86/kernel/dumpstack.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/dumpstack.h b/arch/x86/kernel/dumpstack.h
index e39e77168a37..e1a93be4fd44 100644
--- a/arch/x86/kernel/dumpstack.h
+++ b/arch/x86/kernel/dumpstack.h
@@ -14,6 +14,8 @@
#define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :)
#endif
+#include <linux/uaccess.h>
+
extern void
show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
unsigned long *stack, unsigned long bp, char *log_lvl);
@@ -42,8 +44,10 @@ static inline unsigned long rewind_frame_pointer(int n)
get_bp(frame);
#ifdef CONFIG_FRAME_POINTER
- while (n--)
- frame = frame->next_frame;
+ while (n--) {
+ if (probe_kernel_address(&frame->next_frame, frame))
+ break;
+ }
#endif
return (unsigned long)frame;