Lines Matching refs:sp
32 static int valid_next_sp(unsigned long sp, unsigned long prev_sp) in valid_next_sp() argument
34 if (sp & 0xf) in valid_next_sp()
36 if (!validate_sp(sp, current, STACK_FRAME_OVERHEAD)) in valid_next_sp()
38 if (sp >= prev_sp + STACK_FRAME_MIN_SIZE) in valid_next_sp()
44 if ((sp & ~(THREAD_SIZE - 1)) != (prev_sp & ~(THREAD_SIZE - 1))) in valid_next_sp()
52 unsigned long sp, next_sp; in perf_callchain_kernel() local
59 sp = regs->gpr[1]; in perf_callchain_kernel()
62 if (!validate_sp(sp, current, STACK_FRAME_OVERHEAD)) in perf_callchain_kernel()
66 fp = (unsigned long *) sp; in perf_callchain_kernel()
69 if (next_sp == sp + STACK_INT_FRAME_SIZE && in perf_callchain_kernel()
75 regs = (struct pt_regs *)(sp + STACK_FRAME_OVERHEAD); in perf_callchain_kernel()
102 if (!valid_next_sp(next_sp, sp)) in perf_callchain_kernel()
104 sp = next_sp; in perf_callchain_kernel()
187 static inline int valid_user_sp(unsigned long sp, int is_64) in valid_user_sp() argument
189 if (!sp || (sp & 7) || sp > (is_64 ? TASK_SIZE : 0x100000000UL) - 32) in valid_user_sp()
222 static int sane_signal_64_frame(unsigned long sp) in sane_signal_64_frame() argument
227 sf = (struct signal_frame_64 __user *) sp; in sane_signal_64_frame()
238 unsigned long sp, next_sp; in perf_callchain_user_64() local
247 sp = regs->gpr[1]; in perf_callchain_user_64()
251 fp = (unsigned long __user *) sp; in perf_callchain_user_64()
252 if (!valid_user_sp(sp, 1) || read_user_stack_64(fp, &next_sp)) in perf_callchain_user_64()
263 if (next_sp - sp >= sizeof(struct signal_frame_64) && in perf_callchain_user_64()
264 (is_sigreturn_64_address(next_ip, sp) || in perf_callchain_user_64()
265 (level <= 1 && is_sigreturn_64_address(lr, sp))) && in perf_callchain_user_64()
266 sane_signal_64_frame(sp)) { in perf_callchain_user_64()
270 sigframe = (struct signal_frame_64 __user *) sp; in perf_callchain_user_64()
274 read_user_stack_64(&uregs[PT_R1], &sp)) in perf_callchain_user_64()
286 sp = next_sp; in perf_callchain_user_64()
332 static inline int valid_user_sp(unsigned long sp, int is_64) in valid_user_sp() argument
334 if (!sp || (sp & 7) || sp > TASK_SIZE - 32) in valid_user_sp()
388 static int sane_signal_32_frame(unsigned int sp) in sane_signal_32_frame() argument
393 sf = (struct signal_frame_32 __user *) (unsigned long) sp; in sane_signal_32_frame()
399 static int sane_rt_signal_32_frame(unsigned int sp) in sane_rt_signal_32_frame() argument
404 sf = (struct rt_signal_frame_32 __user *) (unsigned long) sp; in sane_rt_signal_32_frame()
410 static unsigned int __user *signal_frame_32_regs(unsigned int sp, in signal_frame_32_regs() argument
423 if (next_sp - sp >= sizeof(struct signal_frame_32) && in signal_frame_32_regs()
424 is_sigreturn_32_address(next_ip, sp) && in signal_frame_32_regs()
425 sane_signal_32_frame(sp)) { in signal_frame_32_regs()
426 sf = (struct signal_frame_32 __user *) (unsigned long) sp; in signal_frame_32_regs()
430 if (!mctx && next_sp - sp >= sizeof(struct rt_signal_frame_32) && in signal_frame_32_regs()
431 is_rt_sigreturn_32_address(next_ip, sp) && in signal_frame_32_regs()
432 sane_rt_signal_32_frame(sp)) { in signal_frame_32_regs()
433 rt_sf = (struct rt_signal_frame_32 __user *) (unsigned long) sp; in signal_frame_32_regs()
445 unsigned int sp, next_sp; in perf_callchain_user_32() local
453 sp = regs->gpr[1]; in perf_callchain_user_32()
457 fp = (unsigned int __user *) (unsigned long) sp; in perf_callchain_user_32()
458 if (!valid_user_sp(sp, 0) || read_user_stack_32(fp, &next_sp)) in perf_callchain_user_32()
463 uregs = signal_frame_32_regs(sp, next_sp, next_ip); in perf_callchain_user_32()
465 uregs = signal_frame_32_regs(sp, next_sp, lr); in perf_callchain_user_32()
473 read_user_stack_32(&uregs[PT_R1], &sp)) in perf_callchain_user_32()
485 sp = next_sp; in perf_callchain_user_32()