Skip to content

Commit

Permalink
[ARM] Replace extramask with a full copy of the sigmask
Browse files Browse the repository at this point in the history
There's not much point in splitting the sigmask between two different
locations, so copy it entirely into a proper sigset_t.  This will
eventually allow rt_sigframe and sigframe to share more code.

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 ce7a3fd commit cc1a852
Showing 1 changed file with 3 additions and 10 deletions.
13 changes: 3 additions & 10 deletions arch/arm/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ struct aux_sigframe {
*/
struct sigframe {
struct sigcontext sc;
unsigned long extramask[_NSIG_WORDS-1];
sigset_t sigmask;
unsigned long retcode[2];
struct aux_sigframe aux __attribute__((aligned(8)));
};
Expand Down Expand Up @@ -264,10 +264,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)

if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
goto badframe;
if (__get_user(set.sig[0], &frame->sc.oldmask)
|| (_NSIG_WORDS > 1
&& __copy_from_user(&set.sig[1], &frame->extramask,
sizeof(frame->extramask))))
if (__copy_from_user(&set, &frame->sigmask, sizeof(set)))
goto badframe;

sigdelsetmask(&set, ~_BLOCKABLE);
Expand Down Expand Up @@ -486,11 +483,7 @@ setup_frame(int usig, struct k_sigaction *ka, sigset_t *set, struct pt_regs *reg
return 1;

err |= setup_sigcontext(&frame->sc, &frame->aux, regs, set->sig[0]);

if (_NSIG_WORDS > 1) {
err |= __copy_to_user(frame->extramask, &set->sig[1],
sizeof(frame->extramask));
}
err |= __copy_to_user(&frame->sigmask, set, sizeof(*set));

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

0 comments on commit cc1a852

Please sign in to comment.