powerpc: add definition for pt_regs offset within an interrupt frame
[linux-2.6-microblaze.git] / arch / powerpc / perf / callchain.c
index 082f6d0..9e254ae 100644 (file)
@@ -61,12 +61,13 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re
                next_sp = fp[0];
 
                if (next_sp == sp + STACK_INT_FRAME_SIZE &&
+                   validate_sp(sp, current, STACK_INT_FRAME_SIZE) &&
                    fp[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) {
                        /*
                         * This looks like an interrupt frame for an
                         * interrupt that occurred in the kernel
                         */
-                       regs = (struct pt_regs *)(sp + STACK_FRAME_OVERHEAD);
+                       regs = (struct pt_regs *)(sp + STACK_INT_FRAME_REGS);
                        next_ip = regs->nip;
                        lr = regs->link;
                        level = 0;