Lines Matching full:frame

219  * Set up a signal frame.
315 struct sigframe __user *frame; in __setup_frame() local
320 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate); in __setup_frame()
322 if (!access_ok(frame, sizeof(*frame))) in __setup_frame()
325 if (__put_user(sig, &frame->sig)) in __setup_frame()
328 if (setup_sigcontext(&frame->sc, fpstate, regs, set->sig[0])) in __setup_frame()
332 if (__copy_to_user(&frame->extramask, &set->sig[1], in __setup_frame()
333 sizeof(frame->extramask))) in __setup_frame()
341 restorer = &frame->retcode; in __setup_frame()
346 err |= __put_user(restorer, &frame->pretcode); in __setup_frame()
355 err |= __put_user(*((u64 *)&retcode), (u64 *)frame->retcode); in __setup_frame()
361 regs->sp = (unsigned long)frame; in __setup_frame()
378 struct rt_sigframe __user *frame; in __setup_rt_frame() local
383 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate); in __setup_rt_frame()
385 if (!access_ok(frame, sizeof(*frame))) in __setup_rt_frame()
389 put_user_ex(sig, &frame->sig); in __setup_rt_frame()
390 put_user_ex(&frame->info, &frame->pinfo); in __setup_rt_frame()
391 put_user_ex(&frame->uc, &frame->puc); in __setup_rt_frame()
395 put_user_ex(UC_FP_XSTATE, &frame->uc.uc_flags); in __setup_rt_frame()
397 put_user_ex(0, &frame->uc.uc_flags); in __setup_rt_frame()
398 put_user_ex(0, &frame->uc.uc_link); in __setup_rt_frame()
399 save_altstack_ex(&frame->uc.uc_stack, regs->sp); in __setup_rt_frame()
406 put_user_ex(restorer, &frame->pretcode); in __setup_rt_frame()
415 put_user_ex(*((u64 *)&rt_retcode), (u64 *)frame->retcode); in __setup_rt_frame()
418 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in __setup_rt_frame()
419 err |= setup_sigcontext(&frame->uc.uc_mcontext, fpstate, in __setup_rt_frame()
421 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); in __setup_rt_frame()
427 regs->sp = (unsigned long)frame; in __setup_rt_frame()
430 regs->dx = (unsigned long)&frame->info; in __setup_rt_frame()
431 regs->cx = (unsigned long)&frame->uc; in __setup_rt_frame()
459 struct rt_sigframe __user *frame; in __setup_rt_frame() local
464 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp); in __setup_rt_frame()
466 if (!access_ok(frame, sizeof(*frame))) in __setup_rt_frame()
470 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in __setup_rt_frame()
478 put_user_ex(uc_flags, &frame->uc.uc_flags); in __setup_rt_frame()
479 put_user_ex(0, &frame->uc.uc_link); in __setup_rt_frame()
480 save_altstack_ex(&frame->uc.uc_stack, regs->sp); in __setup_rt_frame()
486 put_user_ex(ksig->ka.sa.sa_restorer, &frame->pretcode); in __setup_rt_frame()
493 err |= setup_sigcontext(&frame->uc.uc_mcontext, fp, regs, set->sig[0]); in __setup_rt_frame()
494 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); in __setup_rt_frame()
506 regs->si = (unsigned long)&frame->info; in __setup_rt_frame()
507 regs->dx = (unsigned long)&frame->uc; in __setup_rt_frame()
510 regs->sp = (unsigned long)frame; in __setup_rt_frame()
543 struct rt_sigframe_x32 __user *frame; in x32_setup_rt_frame() local
549 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate); in x32_setup_rt_frame()
551 if (!access_ok(frame, sizeof(*frame))) in x32_setup_rt_frame()
555 if (__copy_siginfo_to_user32(&frame->info, &ksig->info, true)) in x32_setup_rt_frame()
563 put_user_ex(uc_flags, &frame->uc.uc_flags); in x32_setup_rt_frame()
564 put_user_ex(0, &frame->uc.uc_link); in x32_setup_rt_frame()
565 compat_save_altstack_ex(&frame->uc.uc_stack, regs->sp); in x32_setup_rt_frame()
566 put_user_ex(0, &frame->uc.uc__pad0); in x32_setup_rt_frame()
575 put_user_ex(restorer, (unsigned long __user *)&frame->pretcode); in x32_setup_rt_frame()
578 err |= setup_sigcontext(&frame->uc.uc_mcontext, fpstate, in x32_setup_rt_frame()
580 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); in x32_setup_rt_frame()
586 regs->sp = (unsigned long) frame; in x32_setup_rt_frame()
591 regs->si = (unsigned long) &frame->info; in x32_setup_rt_frame()
592 regs->dx = (unsigned long) &frame->uc; in x32_setup_rt_frame()
611 struct sigframe __user *frame; in SYSCALL_DEFINE0() local
614 frame = (struct sigframe __user *)(regs->sp - 8); in SYSCALL_DEFINE0()
616 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
618 if (__get_user(set.sig[0], &frame->sc.oldmask) || (_NSIG_WORDS > 1 in SYSCALL_DEFINE0()
619 && __copy_from_user(&set.sig[1], &frame->extramask, in SYSCALL_DEFINE0()
620 sizeof(frame->extramask)))) in SYSCALL_DEFINE0()
629 if (restore_sigcontext(regs, &frame->sc, 0)) in SYSCALL_DEFINE0()
634 signal_fault(regs, frame, "sigreturn"); in SYSCALL_DEFINE0()
643 struct rt_sigframe __user *frame; in SYSCALL_DEFINE0() local
647 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long)); in SYSCALL_DEFINE0()
648 if (!access_ok(frame, sizeof(*frame))) in SYSCALL_DEFINE0()
650 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in SYSCALL_DEFINE0()
652 if (__get_user(uc_flags, &frame->uc.uc_flags)) in SYSCALL_DEFINE0()
657 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in SYSCALL_DEFINE0()
660 if (restore_altstack(&frame->uc.uc_stack)) in SYSCALL_DEFINE0()
666 signal_fault(regs, frame, "rt_sigreturn"); in SYSCALL_DEFINE0()
694 /* Perform fixup for the pre-signal frame. */ in setup_rt_frame()
697 /* Set up the stack frame */ in setup_rt_frame()
846 void signal_fault(struct pt_regs *regs, void __user *frame, char *where) in signal_fault() argument
852 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", in signal_fault()
854 me->comm, me->pid, where, frame, in signal_fault()
867 struct rt_sigframe_x32 __user *frame; in sys32_x32_rt_sigreturn() local
871 frame = (struct rt_sigframe_x32 __user *)(regs->sp - 8); in sys32_x32_rt_sigreturn()
873 if (!access_ok(frame, sizeof(*frame))) in sys32_x32_rt_sigreturn()
875 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in sys32_x32_rt_sigreturn()
877 if (__get_user(uc_flags, &frame->uc.uc_flags)) in sys32_x32_rt_sigreturn()
882 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags)) in sys32_x32_rt_sigreturn()
885 if (compat_restore_altstack(&frame->uc.uc_stack)) in sys32_x32_rt_sigreturn()
891 signal_fault(regs, frame, "x32 rt_sigreturn"); in sys32_x32_rt_sigreturn()