/arch/arm64/kernel/ |
D | stacktrace.c | 36 notrace void start_backtrace(struct stackframe *frame, unsigned long fp, in start_backtrace() argument 39 frame->fp = fp; in start_backtrace() 40 frame->pc = pc; in start_backtrace() 42 frame->graph = 0; in start_backtrace() 54 bitmap_zero(frame->stacks_done, __NR_STACK_TYPES); in start_backtrace() 55 frame->prev_fp = 0; in start_backtrace() 56 frame->prev_type = STACK_TYPE_UNKNOWN; in start_backtrace() 68 int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) in unwind_frame() argument 70 unsigned long fp = frame->fp; in unwind_frame() 86 if (test_bit(info.type, frame->stacks_done)) in unwind_frame() [all …]
|
D | signal32.c | 92 static int compat_preserve_vfp_context(struct compat_vfp_sigframe __user *frame) in compat_preserve_vfp_context() argument 109 __put_user_error(magic, &frame->magic, err); in compat_preserve_vfp_context() 110 __put_user_error(size, &frame->size, err); in compat_preserve_vfp_context() 116 for (i = 0; i < ARRAY_SIZE(frame->ufp.fpregs); i += 2) { in compat_preserve_vfp_context() 121 __put_user_error(vreg.lo, &frame->ufp.fpregs[i], err); in compat_preserve_vfp_context() 122 __put_user_error(vreg.hi, &frame->ufp.fpregs[i + 1], err); in compat_preserve_vfp_context() 128 __put_user_error(fpscr, &frame->ufp.fpscr, err); in compat_preserve_vfp_context() 135 __put_user_error(fpexc, &frame->ufp_exc.fpexc, err); in compat_preserve_vfp_context() 136 __put_user_error(0, &frame->ufp_exc.fpinst, err); in compat_preserve_vfp_context() 137 __put_user_error(0, &frame->ufp_exc.fpinst2, err); in compat_preserve_vfp_context() [all …]
|
/arch/arm/kernel/ |
D | stacktrace.c | 41 int notrace unwind_frame(struct stackframe *frame) in unwind_frame() argument 44 unsigned long fp = frame->fp; in unwind_frame() 47 low = frame->sp; in unwind_frame() 55 frame->sp = frame->fp; in unwind_frame() 56 frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp)); in unwind_frame() 57 frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 4)); in unwind_frame() 64 frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 12)); in unwind_frame() 65 frame->sp = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 8)); in unwind_frame() 66 frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp - 4)); in unwind_frame() 73 void notrace walk_stackframe(struct stackframe *frame, in walk_stackframe() argument [all …]
|
D | signal.c | 30 static int preserve_iwmmxt_context(struct iwmmxt_sigframe __user *frame) in preserve_iwmmxt_context() argument 32 char kbuf[sizeof(*frame) + 8]; in preserve_iwmmxt_context() 56 err = __copy_to_user(frame, kframe, sizeof(*kframe)); in preserve_iwmmxt_context() 63 struct iwmmxt_sigframe __user *frame = in restore_iwmmxt_context() local 65 char kbuf[sizeof(*frame) + 8]; in restore_iwmmxt_context() 70 if (__copy_from_user(kframe, frame, sizeof(*frame))) in restore_iwmmxt_context() 101 static int preserve_vfp_context(struct vfp_sigframe __user *frame) in preserve_vfp_context() argument 114 return __copy_to_user(frame, &kframe, sizeof(kframe)); in preserve_vfp_context() 119 struct vfp_sigframe frame; in restore_vfp_context() local 122 err = __copy_from_user(&frame, *auxp, sizeof(frame)); in restore_vfp_context() [all …]
|
D | return_address.c | 19 static int save_return_addr(struct stackframe *frame, void *d) in save_return_addr() argument 24 data->addr = (void *)frame->pc; in save_return_addr() 36 struct stackframe frame; in return_address() local 41 frame.fp = (unsigned long)__builtin_frame_address(0); in return_address() 42 frame.sp = current_stack_pointer; in return_address() 43 frame.lr = (unsigned long)__builtin_return_address(0); in return_address() 44 frame.pc = (unsigned long)return_address; in return_address() 46 walk_stackframe(&frame, save_return_addr, &data); in return_address()
|
/arch/mips/kernel/ |
D | signal_n32.c | 56 struct rt_sigframe_n32 __user *frame; in sysn32_rt_sigreturn() local 62 frame = (struct rt_sigframe_n32 __user *)regs->regs[29]; in sysn32_rt_sigreturn() 63 if (!access_ok(frame, sizeof(*frame))) in sysn32_rt_sigreturn() 65 if (__copy_conv_sigset_from_user(&set, &frame->rs_uc.uc_sigmask)) in sysn32_rt_sigreturn() 70 sig = restore_sigcontext(regs, &frame->rs_uc.uc_mcontext); in sysn32_rt_sigreturn() 76 if (compat_restore_altstack(&frame->rs_uc.uc_stack)) in sysn32_rt_sigreturn() 96 struct rt_sigframe_n32 __user *frame; in setup_rt_frame_n32() local 99 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame_n32() 100 if (!access_ok(frame, sizeof (*frame))) in setup_rt_frame_n32() 104 err |= copy_siginfo_to_user32(&frame->rs_info, &ksig->info); in setup_rt_frame_n32() [all …]
|
D | signal_o32.c | 117 struct sigframe32 __user *frame; in setup_frame_32() local 120 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_frame_32() 121 if (!access_ok(frame, sizeof (*frame))) in setup_frame_32() 124 err |= setup_sigcontext32(regs, &frame->sf_sc); in setup_frame_32() 125 err |= __copy_conv_sigset_to_user(&frame->sf_mask, set); in setup_frame_32() 142 regs->regs[ 6] = (unsigned long) &frame->sf_sc; in setup_frame_32() 143 regs->regs[29] = (unsigned long) frame; in setup_frame_32() 149 frame, regs->cp0_epc, regs->regs[31]); in setup_frame_32() 156 struct rt_sigframe32 __user *frame; in sys32_rt_sigreturn() local 162 frame = (struct rt_sigframe32 __user *)regs->regs[29]; in sys32_rt_sigreturn() [all …]
|
/arch/sh/kernel/ |
D | return_address.c | 16 struct dwarf_frame *frame; in return_address() local 20 for (i = 0, frame = NULL, ra = 0; i <= depth; i++) { in return_address() 23 tmp = dwarf_unwind_stack(ra, frame); in return_address() 27 if (frame) in return_address() 28 dwarf_free_frame(frame); in return_address() 30 frame = tmp; in return_address() 32 if (!frame || !frame->return_addr) in return_address() 35 ra = frame->return_addr; in return_address() 41 if (frame) in return_address() 42 dwarf_free_frame(frame); in return_address()
|
D | signal_32.c | 158 struct sigframe __user *frame = (struct sigframe __user *)regs->regs[15]; in sys_sigreturn() local 165 if (!access_ok(frame, sizeof(*frame))) in sys_sigreturn() 168 if (__get_user(set.sig[0], &frame->sc.oldmask) in sys_sigreturn() 170 && __copy_from_user(&set.sig[1], &frame->extramask, in sys_sigreturn() 171 sizeof(frame->extramask)))) in sys_sigreturn() 176 if (restore_sigcontext(regs, &frame->sc, &r0)) in sys_sigreturn() 188 struct rt_sigframe __user *frame = (struct rt_sigframe __user *)regs->regs[15]; in sys_rt_sigreturn() local 195 if (!access_ok(frame, sizeof(*frame))) in sys_rt_sigreturn() 198 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in sys_rt_sigreturn() 203 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) in sys_rt_sigreturn() [all …]
|
D | dwarf.c | 62 static struct dwarf_reg *dwarf_frame_alloc_reg(struct dwarf_frame *frame, in dwarf_frame_alloc_reg() argument 81 list_add(®->link, &frame->reg_list); in dwarf_frame_alloc_reg() 86 static void dwarf_frame_free_regs(struct dwarf_frame *frame) in dwarf_frame_free_regs() argument 90 list_for_each_entry_safe(reg, n, &frame->reg_list, link) { in dwarf_frame_free_regs() 104 static struct dwarf_reg *dwarf_frame_reg(struct dwarf_frame *frame, in dwarf_frame_reg() argument 109 list_for_each_entry(reg, &frame->reg_list, link) { in dwarf_frame_reg() 400 struct dwarf_frame *frame, in dwarf_cfa_execute_insns() argument 410 while (current_insn < insn_end && frame->pc <= pc) { in dwarf_cfa_execute_insns() 421 frame->pc += delta; in dwarf_cfa_execute_insns() 429 regp = dwarf_frame_alloc_reg(frame, reg); in dwarf_cfa_execute_insns() [all …]
|
/arch/x86/kernel/ |
D | signal.c | 206 #define unsafe_put_sigmask(set, frame, label) \ argument 208 (__u64 __user *)&(frame)->uc.uc_sigmask, \ 329 struct sigframe __user *frame; in __setup_frame() local 333 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_frame() 335 if (!user_access_begin(frame, sizeof(*frame))) in __setup_frame() 338 unsafe_put_user(sig, &frame->sig, Efault); in __setup_frame() 339 unsafe_put_sigcontext(&frame->sc, fp, regs, set, Efault); in __setup_frame() 340 unsafe_put_user(set->sig[1], &frame->extramask[0], Efault); in __setup_frame() 345 restorer = &frame->retcode; in __setup_frame() 350 unsafe_put_user(restorer, &frame->pretcode, Efault); in __setup_frame() [all …]
|
D | stacktrace.c | 89 struct stack_frame_user *frame) in copy_stack_frame() argument 93 if (__range_not_ok(fp, sizeof(*frame), TASK_SIZE)) in copy_stack_frame() 98 if (__get_user(frame->next_fp, &fp->next_fp) || in copy_stack_frame() 99 __get_user(frame->ret_addr, &fp->ret_addr)) in copy_stack_frame() 115 struct stack_frame_user frame; in arch_stack_walk_user() local 117 frame.next_fp = NULL; in arch_stack_walk_user() 118 frame.ret_addr = 0; in arch_stack_walk_user() 119 if (!copy_stack_frame(fp, &frame)) in arch_stack_walk_user() 123 if (!frame.ret_addr) in arch_stack_walk_user() 125 if (!consume_entry(cookie, frame.ret_addr)) in arch_stack_walk_user() [all …]
|
/arch/xtensa/kernel/ |
D | stacktrace.c | 27 int (*ufn)(struct stackframe *frame, void *data), in xtensa_backtrace_user() argument 35 struct stackframe frame; in xtensa_backtrace_user() local 41 frame.pc = pc; in xtensa_backtrace_user() 42 frame.sp = a1; in xtensa_backtrace_user() 44 if (pc == 0 || pc >= TASK_SIZE || ufn(&frame, data)) in xtensa_backtrace_user() 79 frame.pc = pc; in xtensa_backtrace_user() 80 frame.sp = a1; in xtensa_backtrace_user() 82 if (pc == 0 || pc >= TASK_SIZE || ufn(&frame, data)) in xtensa_backtrace_user() 106 frame.pc = pc; in xtensa_backtrace_user() 107 frame.sp = a1; in xtensa_backtrace_user() [all …]
|
D | signal.c | 134 setup_sigcontext(struct rt_sigframe __user *frame, struct pt_regs *regs) in setup_sigcontext() argument 136 struct sigcontext __user *sc = &frame->uc.uc_mcontext; in setup_sigcontext() 159 err |= __copy_to_user(&frame->xtregs.cp, &ti->xtregs_cp, in setup_sigcontext() 160 sizeof (frame->xtregs.cp)); in setup_sigcontext() 162 err |= __copy_to_user(&frame->xtregs.opt, ®s->xtregs_opt, in setup_sigcontext() 164 err |= __copy_to_user(&frame->xtregs.user, &ti->xtregs_user, in setup_sigcontext() 167 err |= __put_user(err ? NULL : &frame->xtregs, &sc->sc_xtregs); in setup_sigcontext() 173 restore_sigcontext(struct pt_regs *regs, struct rt_sigframe __user *frame) in restore_sigcontext() argument 175 struct sigcontext __user *sc = &frame->uc.uc_mcontext; in restore_sigcontext() 223 err |= __copy_from_user(&ti->xtregs_cp, &frame->xtregs.cp, in restore_sigcontext() [all …]
|
/arch/x86/ia32/ |
D | ia32_signal.c | 103 struct sigframe_ia32 __user *frame = (struct sigframe_ia32 __user *)(regs->sp-8); in COMPAT_SYSCALL_DEFINE0() local 106 if (!access_ok(frame, sizeof(*frame))) in COMPAT_SYSCALL_DEFINE0() 108 if (__get_user(set.sig[0], &frame->sc.oldmask) in COMPAT_SYSCALL_DEFINE0() 109 || __get_user(((__u32 *)&set)[1], &frame->extramask[0])) in COMPAT_SYSCALL_DEFINE0() 114 if (ia32_restore_sigcontext(regs, &frame->sc)) in COMPAT_SYSCALL_DEFINE0() 119 signal_fault(regs, frame, "32bit sigreturn"); in COMPAT_SYSCALL_DEFINE0() 126 struct rt_sigframe_ia32 __user *frame; in COMPAT_SYSCALL_DEFINE0() local 129 frame = (struct rt_sigframe_ia32 __user *)(regs->sp - 4); in COMPAT_SYSCALL_DEFINE0() 131 if (!access_ok(frame, sizeof(*frame))) in COMPAT_SYSCALL_DEFINE0() 133 if (__get_user(set.sig[0], (__u64 __user *)&frame->uc.uc_sigmask)) in COMPAT_SYSCALL_DEFINE0() [all …]
|
/arch/s390/kernel/ |
D | process.c | 116 } *frame; in copy_thread() local 118 frame = container_of(task_pt_regs(p), struct fake_frame, childregs); in copy_thread() 119 p->thread.ksp = (unsigned long) frame; in copy_thread() 136 frame->sf.back_chain = 0; in copy_thread() 137 frame->sf.gprs[5] = (unsigned long)frame + sizeof(struct stack_frame); in copy_thread() 138 frame->sf.gprs[6] = (unsigned long)p; in copy_thread() 140 frame->sf.gprs[8] = (unsigned long)ret_from_fork; in copy_thread() 142 frame->sf.gprs[9] = (unsigned long)frame; in copy_thread() 147 memset(&frame->childregs, 0, sizeof(struct pt_regs)); in copy_thread() 148 frame->childregs.psw.mask = PSW_KERNEL_BITS | PSW_MASK_DAT | in copy_thread() [all …]
|
D | compat_signal.c | 184 sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15]; in COMPAT_SYSCALL_DEFINE0() local 187 if (get_compat_sigset(&set, (compat_sigset_t __user *)frame->sc.oldmask)) in COMPAT_SYSCALL_DEFINE0() 191 if (restore_sigregs32(regs, &frame->sregs)) in COMPAT_SYSCALL_DEFINE0() 193 if (restore_sigregs_ext32(regs, &frame->sregs_ext)) in COMPAT_SYSCALL_DEFINE0() 205 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15]; in COMPAT_SYSCALL_DEFINE0() local 208 if (get_compat_sigset(&set, &frame->uc.uc_sigmask)) in COMPAT_SYSCALL_DEFINE0() 211 if (compat_restore_altstack(&frame->uc.uc_stack)) in COMPAT_SYSCALL_DEFINE0() 214 if (restore_sigregs32(regs, &frame->uc.uc_mcontext)) in COMPAT_SYSCALL_DEFINE0() 216 if (restore_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext)) in COMPAT_SYSCALL_DEFINE0() 258 sigframe32 __user *frame; in setup_frame32() local [all …]
|
D | signal.c | 222 struct sigframe __user *frame = in SYSCALL_DEFINE0() local 226 if (__copy_from_user(&set.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE)) in SYSCALL_DEFINE0() 230 if (restore_sigregs(regs, &frame->sregs)) in SYSCALL_DEFINE0() 232 if (restore_sigregs_ext(regs, &frame->sregs_ext)) in SYSCALL_DEFINE0() 244 struct rt_sigframe __user *frame = in SYSCALL_DEFINE0() local 248 if (__copy_from_user(&set.sig, &frame->uc.uc_sigmask, sizeof(set))) in SYSCALL_DEFINE0() 251 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0() 254 if (restore_sigregs(regs, &frame->uc.uc_mcontext)) in SYSCALL_DEFINE0() 256 if (restore_sigregs_ext(regs, &frame->uc.uc_mcontext_ext)) in SYSCALL_DEFINE0() 292 struct sigframe __user *frame; in setup_frame() local [all …]
|
/arch/arc/include/asm/ |
D | unwind.h | 55 #define UNW_PC(frame) ((frame)->regs.r63) argument 56 #define UNW_SP(frame) ((frame)->regs.r28) argument 57 #define UNW_BLINK(frame) ((frame)->regs.r31) argument 61 #define UNW_FP(frame) ((frame)->regs.r27) argument 67 #define UNW_FP(frame) ((void)(frame), 0) argument 110 extern int arc_unwind(struct unwind_frame_info *frame); 143 #define UNW_PC(frame) ((void)(frame), 0) argument 144 #define UNW_SP(frame) ((void)(frame), 0) argument 145 #define UNW_FP(frame) ((void)(frame), 0) argument
|
/arch/x86/um/ |
D | signal.c | 363 struct sigframe __user *frame; in setup_signal_stack_sc() local 369 frame = (struct sigframe __user *) stack_top - 1; in setup_signal_stack_sc() 370 if (!access_ok(frame, sizeof(*frame))) in setup_signal_stack_sc() 373 restorer = frame->retcode; in setup_signal_stack_sc() 377 err |= __put_user(restorer, &frame->pretcode); in setup_signal_stack_sc() 378 err |= __put_user(sig, &frame->sig); in setup_signal_stack_sc() 379 err |= copy_sc_to_user(&frame->sc, &frame->fpstate, regs, mask->sig[0]); in setup_signal_stack_sc() 381 err |= __copy_to_user(&frame->extramask, &mask->sig[1], in setup_signal_stack_sc() 382 sizeof(frame->extramask)); in setup_signal_stack_sc() 391 err |= __put_user(0xb858, (short __user *)(frame->retcode+0)); in setup_signal_stack_sc() [all …]
|
/arch/openrisc/kernel/ |
D | signal.c | 71 struct rt_sigframe __user *frame = (struct rt_sigframe __user *)regs->sp; in _sys_rt_sigreturn() local 79 if (((unsigned long)frame) & 3) in _sys_rt_sigreturn() 82 if (!access_ok(frame, sizeof(*frame))) in _sys_rt_sigreturn() 84 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in _sys_rt_sigreturn() 89 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in _sys_rt_sigreturn() 92 if (restore_altstack(&frame->uc.uc_stack)) in _sys_rt_sigreturn() 154 struct rt_sigframe __user *frame; in setup_rt_frame() local 158 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 160 if (!access_ok(frame, sizeof(*frame))) in setup_rt_frame() 165 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() [all …]
|
/arch/csky/kernel/ |
D | signal.c | 72 struct rt_sigframe __user *frame; in SYSCALL_DEFINE0() local 78 frame = (struct rt_sigframe __user *)regs->usp; in SYSCALL_DEFINE0() 80 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0() 83 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in SYSCALL_DEFINE0() 88 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in SYSCALL_DEFINE0() 91 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0() 101 static int setup_sigcontext(struct rt_sigframe __user *frame, in setup_sigcontext() argument 104 struct sigcontext __user *sc = &frame->uc.uc_mcontext; in setup_sigcontext() 139 struct rt_sigframe __user *frame; in setup_rt_frame() local 142 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() [all …]
|
/arch/riscv/kernel/ |
D | signal.c | 102 struct rt_sigframe __user *frame; in SYSCALL_DEFINE0() local 109 frame = (struct rt_sigframe __user *)regs->sp; in SYSCALL_DEFINE0() 111 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0() 114 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in SYSCALL_DEFINE0() 119 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in SYSCALL_DEFINE0() 122 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0() 135 frame, (void *)regs->epc, (void *)regs->sp); in SYSCALL_DEFINE0() 141 static long setup_sigcontext(struct rt_sigframe __user *frame, in setup_sigcontext() argument 144 struct sigcontext __user *sc = &frame->uc.uc_mcontext; in setup_sigcontext() 180 struct rt_sigframe __user *frame; in setup_rt_frame() local [all …]
|
/arch/h8300/kernel/ |
D | signal.c | 108 struct rt_sigframe *frame = (struct rt_sigframe *)(usp - 4); in sys_rt_sigreturn() local 112 if (!access_ok(frame, sizeof(*frame))) in sys_rt_sigreturn() 114 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in sys_rt_sigreturn() 119 if (restore_sigcontext(&frame->uc.uc_mcontext, &er0)) in sys_rt_sigreturn() 122 if (restore_altstack(&frame->uc.uc_stack)) in sys_rt_sigreturn() 161 struct rt_sigframe *frame; in setup_rt_frame() local 165 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 167 if (!access_ok(frame, sizeof(*frame))) in setup_rt_frame() 171 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 174 err |= __put_user(0, &frame->uc.uc_flags); in setup_rt_frame() [all …]
|
/arch/arm/include/asm/ |
D | stacktrace.h | 19 void arm_get_current_stackframe(struct pt_regs *regs, struct stackframe *frame) in arm_get_current_stackframe() argument 21 frame->fp = frame_pointer(regs); in arm_get_current_stackframe() 22 frame->sp = regs->ARM_sp; in arm_get_current_stackframe() 23 frame->lr = regs->ARM_lr; in arm_get_current_stackframe() 24 frame->pc = regs->ARM_pc; in arm_get_current_stackframe() 27 extern int unwind_frame(struct stackframe *frame); 28 extern void walk_stackframe(struct stackframe *frame,
|