Skip to content

Commit

Permalink
[ARM] Merge sigcontext and sigmask members of sigframe
Browse files Browse the repository at this point in the history
ucontext contains both the sigcontext and sigmask structures, and
is also used for rt signal contexts.  Re-use this structure for
non-rt signals.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King authored and Russell King committed Jun 18, 2006
1 parent cc1a852 commit 7d4fdc1
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions arch/arm/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@ struct aux_sigframe {
* Do a signal return; undo the signal stack. These are aligned to 64-bit.
*/
struct sigframe {
struct sigcontext sc;
sigset_t sigmask;
struct ucontext uc;
unsigned long retcode[2];
struct aux_sigframe aux __attribute__((aligned(8)));
};
Expand Down Expand Up @@ -264,7 +263,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)

if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (__copy_from_user(&set, &frame->sigmask, sizeof(set)))
if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
goto badframe;

sigdelsetmask(&set, ~_BLOCKABLE);
Expand All @@ -273,7 +272,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);

if (restore_sigcontext(regs, &frame->sc, &frame->aux))
if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &frame->aux))
goto badframe;

/* Send SIGTRAP if we're single-stepping */
Expand Down Expand Up @@ -482,8 +481,8 @@ setup_frame(int usig, struct k_sigaction *ka, sigset_t *set, struct pt_regs *reg
if (!frame)
return 1;

err |= setup_sigcontext(&frame->sc, &frame->aux, regs, set->sig[0]);
err |= __copy_to_user(&frame->sigmask, set, sizeof(*set));
err |= setup_sigcontext(&frame->uc.uc_mcontext, &frame->aux, regs, set->sig[0]);
err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));

if (err == 0)
err = setup_return(regs, ka, frame->retcode, frame, usig);
Expand Down

0 comments on commit 7d4fdc1

Please sign in to comment.