Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf: Fix unsafe frame rewinding with hot regs fetching

+6 -2
+6 -2
arch/x86/kernel/dumpstack.h
··· 14 #define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :) 15 #endif 16 17 extern void 18 show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, 19 unsigned long *stack, unsigned long bp, char *log_lvl); ··· 44 get_bp(frame); 45 46 #ifdef CONFIG_FRAME_POINTER 47 - while (n--) 48 - frame = frame->next_frame; 49 #endif 50 51 return (unsigned long)frame;
··· 14 #define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :) 15 #endif 16 17 + #include <linux/uaccess.h> 18 + 19 extern void 20 show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, 21 unsigned long *stack, unsigned long bp, char *log_lvl); ··· 42 get_bp(frame); 43 44 #ifdef CONFIG_FRAME_POINTER 45 + while (n--) { 46 + if (probe_kernel_address(&frame->next_frame, frame)) 47 + break; 48 + } 49 #endif 50 51 return (unsigned long)frame;