Lines Matching full:frame
206 #define unsafe_put_sigmask(set, frame, label) \ argument
208 (__u64 __user *)&(frame)->uc.uc_sigmask, \
212 * Set up a signal frame.
308 struct sigframe __user *frame; in __setup_frame() local
312 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_frame()
314 if (!user_access_begin(frame, sizeof(*frame))) in __setup_frame()
317 unsafe_put_user(sig, &frame->sig, Efault); in __setup_frame()
318 unsafe_put_sigcontext(&frame->sc, fp, regs, set, Efault); in __setup_frame()
319 unsafe_put_user(set->sig[1], &frame->extramask[0], Efault); in __setup_frame()
324 restorer = &frame->retcode; in __setup_frame()
329 unsafe_put_user(restorer, &frame->pretcode, Efault); in __setup_frame()
338 unsafe_put_user(*((u64 *)&retcode), (u64 *)frame->retcode, Efault); in __setup_frame()
342 regs->sp = (unsigned long)frame; in __setup_frame()
363 struct rt_sigframe __user *frame; in __setup_rt_frame() local
367 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_rt_frame()
369 if (!user_access_begin(frame, sizeof(*frame))) in __setup_rt_frame()
372 unsafe_put_user(sig, &frame->sig, Efault); in __setup_rt_frame()
373 unsafe_put_user(&frame->info, &frame->pinfo, Efault); in __setup_rt_frame()
374 unsafe_put_user(&frame->uc, &frame->puc, Efault); in __setup_rt_frame()
378 unsafe_put_user(UC_FP_XSTATE, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
380 unsafe_put_user(0, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
381 unsafe_put_user(0, &frame->uc.uc_link, Efault); in __setup_rt_frame()
382 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in __setup_rt_frame()
389 unsafe_put_user(restorer, &frame->pretcode, Efault); in __setup_rt_frame()
398 unsafe_put_user(*((u64 *)&rt_retcode), (u64 *)frame->retcode, Efault); in __setup_rt_frame()
399 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in __setup_rt_frame()
400 unsafe_put_sigmask(set, frame, Efault); in __setup_rt_frame()
403 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
407 regs->sp = (unsigned long)frame; in __setup_rt_frame()
410 regs->dx = (unsigned long)&frame->info; in __setup_rt_frame()
411 regs->cx = (unsigned long)&frame->uc; in __setup_rt_frame()
442 struct rt_sigframe __user *frame; in __setup_rt_frame() local
450 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp); in __setup_rt_frame()
453 if (!user_access_begin(frame, sizeof(*frame))) in __setup_rt_frame()
457 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
458 unsafe_put_user(0, &frame->uc.uc_link, Efault); in __setup_rt_frame()
459 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in __setup_rt_frame()
463 unsafe_put_user(ksig->ka.sa.sa_restorer, &frame->pretcode, Efault); in __setup_rt_frame()
464 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in __setup_rt_frame()
465 unsafe_put_sigmask(set, frame, Efault); in __setup_rt_frame()
469 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
480 regs->si = (unsigned long)&frame->info; in __setup_rt_frame()
481 regs->dx = (unsigned long)&frame->uc; in __setup_rt_frame()
484 regs->sp = (unsigned long)frame; in __setup_rt_frame()
546 struct rt_sigframe_x32 __user *frame; in x32_setup_rt_frame() local
554 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in x32_setup_rt_frame()
558 if (!user_access_begin(frame, sizeof(*frame))) in x32_setup_rt_frame()
562 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault); in x32_setup_rt_frame()
563 unsafe_put_user(0, &frame->uc.uc_link, Efault); in x32_setup_rt_frame()
564 unsafe_compat_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in x32_setup_rt_frame()
565 unsafe_put_user(0, &frame->uc.uc__pad0, Efault); in x32_setup_rt_frame()
567 unsafe_put_user(restorer, (unsigned long __user *)&frame->pretcode, Efault); in x32_setup_rt_frame()
568 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in x32_setup_rt_frame()
569 unsafe_put_sigmask(set, frame, Efault); in x32_setup_rt_frame()
573 if (x32_copy_siginfo_to_user(&frame->info, &ksig->info)) in x32_setup_rt_frame()
578 regs->sp = (unsigned long) frame; in x32_setup_rt_frame()
583 regs->si = (unsigned long) &frame->info; in x32_setup_rt_frame()
584 regs->dx = (unsigned long) &frame->uc; in x32_setup_rt_frame()
608 struct sigframe __user *frame; in SYSCALL_DEFINE0() local
611 frame = (struct sigframe __user *)(regs->sp - 8); in SYSCALL_DEFINE0()
613 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
615 if (__get_user(set.sig[0], &frame->sc.oldmask) || in SYSCALL_DEFINE0()
616 __get_user(set.sig[1], &frame->extramask[0])) in SYSCALL_DEFINE0()
625 if (restore_sigcontext(regs, &frame->sc, 0)) in SYSCALL_DEFINE0()
630 signal_fault(regs, frame, "sigreturn"); in SYSCALL_DEFINE0()
639 struct rt_sigframe __user *frame; in SYSCALL_DEFINE0() local
643 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long)); in SYSCALL_DEFINE0()
644 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
646 if (__get_user(*(__u64 *)&set, (__u64 __user *)&frame->uc.uc_sigmask)) in SYSCALL_DEFINE0()
648 if (__get_user(uc_flags, &frame->uc.uc_flags)) in SYSCALL_DEFINE0()
653 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in SYSCALL_DEFINE0()
656 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0()
662 signal_fault(regs, frame, "rt_sigreturn"); in SYSCALL_DEFINE0()
690 /* Perform fixup for the pre-signal frame. */ in setup_rt_frame()
693 /* Set up the stack frame */ in setup_rt_frame()
842 void signal_fault(struct pt_regs *regs, void __user *frame, char *where) in signal_fault() argument
848 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", in signal_fault()
850 me->comm, me->pid, where, frame, in signal_fault()
863 struct rt_sigframe_x32 __user *frame; in COMPAT_SYSCALL_DEFINE0() local
867 frame = (struct rt_sigframe_x32 __user *)(regs->sp - 8); in COMPAT_SYSCALL_DEFINE0()
869 if (!access_ok(frame, sizeof(*frame))) in COMPAT_SYSCALL_DEFINE0()
871 if (__get_user(set.sig[0], (__u64 __user *)&frame->uc.uc_sigmask)) in COMPAT_SYSCALL_DEFINE0()
873 if (__get_user(uc_flags, &frame->uc.uc_flags)) in COMPAT_SYSCALL_DEFINE0()
878 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in COMPAT_SYSCALL_DEFINE0()
881 if (compat_restore_altstack(&frame->uc.uc_stack)) in COMPAT_SYSCALL_DEFINE0()
887 signal_fault(regs, frame, "x32 rt_sigreturn"); in COMPAT_SYSCALL_DEFINE0()