Lines Matching refs:frame

206 #define unsafe_put_sigmask(set, frame, label) \
208 (__u64 __user *)&(frame)->uc.uc_sigmask, \
212 * Set up a signal frame.
324 struct sigframe __user *frame;
328 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
330 if (!user_access_begin(frame, sizeof(*frame)))
333 unsafe_put_user(sig, &frame->sig, Efault);
334 unsafe_put_sigcontext(&frame->sc, fp, regs, set, Efault);
335 unsafe_put_user(set->sig[1], &frame->extramask[0], Efault);
340 restorer = &frame->retcode;
345 unsafe_put_user(restorer, &frame->pretcode, Efault);
354 unsafe_put_user(*((u64 *)&retcode), (u64 *)frame->retcode, Efault);
358 regs->sp = (unsigned long)frame;
379 struct rt_sigframe __user *frame;
383 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
385 if (!user_access_begin(frame, sizeof(*frame)))
388 unsafe_put_user(sig, &frame->sig, Efault);
389 unsafe_put_user(&frame->info, &frame->pinfo, Efault);
390 unsafe_put_user(&frame->uc, &frame->puc, Efault);
394 unsafe_put_user(UC_FP_XSTATE, &frame->uc.uc_flags, Efault);
396 unsafe_put_user(0, &frame->uc.uc_flags, Efault);
397 unsafe_put_user(0, &frame->uc.uc_link, Efault);
398 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault);
405 unsafe_put_user(restorer, &frame->pretcode, Efault);
414 unsafe_put_user(*((u64 *)&rt_retcode), (u64 *)frame->retcode, Efault);
415 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault);
416 unsafe_put_sigmask(set, frame, Efault);
419 if (copy_siginfo_to_user(&frame->info, &ksig->info))
423 regs->sp = (unsigned long)frame;
426 regs->dx = (unsigned long)&frame->info;
427 regs->cx = (unsigned long)&frame->uc;
458 struct rt_sigframe __user *frame;
466 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp);
469 if (!user_access_begin(frame, sizeof(*frame)))
473 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault);
474 unsafe_put_user(0, &frame->uc.uc_link, Efault);
475 unsafe_save_altstack(&frame->uc.uc_stack, regs->sp, Efault);
479 unsafe_put_user(ksig->ka.sa.sa_restorer, &frame->pretcode, Efault);
480 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault);
481 unsafe_put_sigmask(set, frame, Efault);
485 if (copy_siginfo_to_user(&frame->info, &ksig->info))
496 regs->si = (unsigned long)&frame->info;
497 regs->dx = (unsigned long)&frame->uc;
500 regs->sp = (unsigned long)frame;
562 struct rt_sigframe_x32 __user *frame;
570 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
574 if (!user_access_begin(frame, sizeof(*frame)))
578 unsafe_put_user(uc_flags, &frame->uc.uc_flags, Efault);
579 unsafe_put_user(0, &frame->uc.uc_link, Efault);
580 unsafe_compat_save_altstack(&frame->uc.uc_stack, regs->sp, Efault);
581 unsafe_put_user(0, &frame->uc.uc__pad0, Efault);
583 unsafe_put_user(restorer, (unsigned long __user *)&frame->pretcode, Efault);
584 unsafe_put_sigcontext(&frame->uc.uc_mcontext, fp, regs, set, Efault);
585 unsafe_put_sigmask(set, frame, Efault);
589 if (x32_copy_siginfo_to_user(&frame->info, &ksig->info))
594 regs->sp = (unsigned long) frame;
599 regs->si = (unsigned long) &frame->info;
600 regs->dx = (unsigned long) &frame->uc;
624 struct sigframe __user *frame;
627 frame = (struct sigframe __user *)(regs->sp - 8);
629 if (!access_ok(frame, sizeof(*frame)))
631 if (__get_user(set.sig[0], &frame->sc.oldmask) ||
632 __get_user(set.sig[1], &frame->extramask[0]))
641 if (restore_sigcontext(regs, &frame->sc, 0))
646 signal_fault(regs, frame, "sigreturn");
655 struct rt_sigframe __user *frame;
659 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
660 if (!access_ok(frame, sizeof(*frame)))
662 if (__get_user(*(__u64 *)&set, (__u64 __user *)&frame->uc.uc_sigmask))
664 if (__get_user(uc_flags, &frame->uc.uc_flags))
669 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags))
672 if (restore_altstack(&frame->uc.uc_stack))
678 signal_fault(regs, frame, "rt_sigreturn");
706 /* Perform fixup for the pre-signal frame. */
709 /* Set up the stack frame */
836 void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
842 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx",
844 me->comm, me->pid, where, frame,
857 struct rt_sigframe_x32 __user *frame;
861 frame = (struct rt_sigframe_x32 __user *)(regs->sp - 8);
863 if (!access_ok(frame, sizeof(*frame)))
865 if (__get_user(set.sig[0], (__u64 __user *)&frame->uc.uc_sigmask))
867 if (__get_user(uc_flags, &frame->uc.uc_flags))
872 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, uc_flags))
875 if (compat_restore_altstack(&frame->uc.uc_stack))
881 signal_fault(regs, frame, "x32 rt_sigreturn");