Lines Matching full:frame

209 #define unsafe_put_sigmask(set, frame, label) \  argument
211 (__u64 __user *)&(frame)->uc.uc_sigmask, \
215 * Set up a signal frame.
330 struct sigframe __user *frame; in __setup_frame() local
334 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_frame()
336 if (!user_access_begin(frame, sizeof(*frame))) in __setup_frame()
339 unsafe_put_user(sig, &frame->sig, Efault); in __setup_frame()
340 unsafe_put_sigcontext(&frame->sc, fp, regs, set, Efault); in __setup_frame()
341 unsafe_put_user(set->sig[1], &frame->extramask[0], Efault); in __setup_frame()
346 restorer = &frame->retcode; in __setup_frame()
351 unsafe_put_user(restorer, &frame->pretcode, Efault); in __setup_frame()
360 unsafe_put_user(*((u64 *)&retcode), (u64 *)frame->retcode, Efault); in __setup_frame()
364 regs->sp = (unsigned long)frame; in __setup_frame()
385 struct rt_sigframe __user *frame; in __setup_rt_frame() local
389 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in __setup_rt_frame()
391 if (!user_access_begin(frame, sizeof(*frame))) in __setup_rt_frame()
394 unsafe_put_user(sig, &frame->sig, Efault); in __setup_rt_frame()
395 unsafe_put_user(&frame->info, &frame->pinfo, Efault); in __setup_rt_frame()
396 unsafe_put_user(&frame->uc, &frame->puc, Efault); in __setup_rt_frame()
400 unsafe_put_user(UC_FP_XSTATE, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
402 unsafe_put_user(0, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
403 unsafe_put_user(0, &frame->uc.uc_link, Efault); in __setup_rt_frame()
404 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in __setup_rt_frame()
411 unsafe_put_user(restorer, &frame->pretcode, Efault); in __setup_rt_frame()
420 unsafe_put_user(*((u64 *)&rt_retcode), (u64 *)frame->retcode, Efault); in __setup_rt_frame()
421 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in __setup_rt_frame()
422 unsafe_put_sigmask(set, frame, Efault); in __setup_rt_frame()
425 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
429 regs->sp = (unsigned long)frame; in __setup_rt_frame()
432 regs->dx = (unsigned long)&frame->info; in __setup_rt_frame()
433 regs->cx = (unsigned long)&frame->uc; in __setup_rt_frame()
464 struct rt_sigframe __user *frame; in __setup_rt_frame() local
472 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp); in __setup_rt_frame()
475 if (!user_access_begin(frame, sizeof(*frame))) in __setup_rt_frame()
479 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault); in __setup_rt_frame()
480 unsafe_put_user(0, &frame->uc.uc_link, Efault); in __setup_rt_frame()
481 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in __setup_rt_frame()
485 unsafe_put_user(ksig->ka.sa.sa_restorer, &frame->pretcode, Efault); in __setup_rt_frame()
486 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in __setup_rt_frame()
487 unsafe_put_sigmask(set, frame, Efault); in __setup_rt_frame()
491 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
502 regs->si = (unsigned long)&frame->info; in __setup_rt_frame()
503 regs->dx = (unsigned long)&frame->uc; in __setup_rt_frame()
506 regs->sp = (unsigned long)frame; in __setup_rt_frame()
568 struct rt_sigframe_x32 __user *frame; in x32_setup_rt_frame() local
576 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp); in x32_setup_rt_frame()
580 if (!user_access_begin(frame, sizeof(*frame))) in x32_setup_rt_frame()
584 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault); in x32_setup_rt_frame()
585 unsafe_put_user(0, &frame->uc.uc_link, Efault); in x32_setup_rt_frame()
586 unsafe_compat_save_altstack(&frame->uc.uc_stack, regs->sp, Efault); in x32_setup_rt_frame()
587 unsafe_put_user(0, &frame->uc.uc__pad0, Efault); in x32_setup_rt_frame()
589 unsafe_put_user(restorer, (unsigned long __user *)&frame->pretcode, Efault); in x32_setup_rt_frame()
590 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault); in x32_setup_rt_frame()
591 unsafe_put_sigmask(set, frame, Efault); in x32_setup_rt_frame()
595 if (x32_copy_siginfo_to_user(&frame->info, &ksig->info)) in x32_setup_rt_frame()
600 regs->sp = (unsigned long) frame; in x32_setup_rt_frame()
605 regs->si = (unsigned long) &frame->info; in x32_setup_rt_frame()
606 regs->dx = (unsigned long) &frame->uc; in x32_setup_rt_frame()
630 struct sigframe __user *frame; in SYSCALL_DEFINE0() local
633 frame = (struct sigframe __user *)(regs->sp - 8); in SYSCALL_DEFINE0()
635 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
637 if (__get_user(set.sig[0], &frame->sc.oldmask) || in SYSCALL_DEFINE0()
638 __get_user(set.sig[1], &frame->extramask[0])) in SYSCALL_DEFINE0()
647 if (!restore_sigcontext(regs, &frame->sc, 0)) in SYSCALL_DEFINE0()
652 signal_fault(regs, frame, "sigreturn"); in SYSCALL_DEFINE0()
661 struct rt_sigframe __user *frame; in SYSCALL_DEFINE0() local
665 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long)); in SYSCALL_DEFINE0()
666 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
668 if (__get_user(*(__u64 *)&set, (__u64 __user *)&frame->uc.uc_sigmask)) in SYSCALL_DEFINE0()
670 if (__get_user(uc_flags, &frame->uc.uc_flags)) in SYSCALL_DEFINE0()
675 if (!restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in SYSCALL_DEFINE0()
678 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0()
684 signal_fault(regs, frame, "rt_sigreturn"); in SYSCALL_DEFINE0()
689 * There are four different struct types for signal frame: sigframe_ia32,
701 * The FP state frame contains an XSAVE buffer which must be 64-byte aligned.
702 * If a signal frame starts at an unaligned address, extra space is required.
708 * The frame data is composed of the following areas and laid out as:
713 * | (f)xsave frame |
770 /* Perform fixup for the pre-signal frame. */ in setup_rt_frame()
773 /* Set up the stack frame */ in setup_rt_frame()
900 void signal_fault(struct pt_regs *regs, void __user *frame, char *where) in signal_fault() argument
906 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", in signal_fault()
908 me->comm, me->pid, where, frame, in signal_fault()
977 struct rt_sigframe_x32 __user *frame; in COMPAT_SYSCALL_DEFINE0() local
981 frame = (struct rt_sigframe_x32 __user *)(regs->sp - 8); in COMPAT_SYSCALL_DEFINE0()
983 if (!access_ok(frame, sizeof(*frame))) in COMPAT_SYSCALL_DEFINE0()
985 if (__get_user(set.sig[0], (__u64 __user *)&frame->uc.uc_sigmask)) in COMPAT_SYSCALL_DEFINE0()
987 if (__get_user(uc_flags, &frame->uc.uc_flags)) in COMPAT_SYSCALL_DEFINE0()
992 if (!restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in COMPAT_SYSCALL_DEFINE0()
995 if (compat_restore_altstack(&frame->uc.uc_stack)) in COMPAT_SYSCALL_DEFINE0()
1001 signal_fault(regs, frame, "x32 rt_sigreturn"); in COMPAT_SYSCALL_DEFINE0()