arm64: signal32: Drop pointless call to sigdelsetmask()

Commit 77097ae503 ("most of set_current_blocked() callers want
SIGKILL/SIGSTOP removed from set") extended set_current_blocked() to
remove SIGKILL and SIGSTOP from the new signal set and updated all
callers accordingly.

Unfortunately, this collided with the merge of the arm64 architecture,
which duly removes these signals when restoring the compat sigframe, as
this was what was previously done by arch/arm/.

Remove the redundant call to sigdelsetmask() from
compat_restore_sigframe().

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20210825093911.24493-1-will@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Will Deacon 2021-08-25 10:39:11 +01:00 committed by Catalin Marinas
parent 7559b7d7d6
commit 24de5838db
1 changed files with 1 additions and 5 deletions

View File

@ -46,8 +46,6 @@ struct compat_aux_sigframe {
unsigned long end_magic; unsigned long end_magic;
} __attribute__((__aligned__(8))); } __attribute__((__aligned__(8)));
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set) static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
{ {
compat_sigset_t cset; compat_sigset_t cset;
@ -190,10 +188,8 @@ static int compat_restore_sigframe(struct pt_regs *regs,
unsigned long psr; unsigned long psr;
err = get_sigset_t(&set, &sf->uc.uc_sigmask); err = get_sigset_t(&set, &sf->uc.uc_sigmask);
if (err == 0) { if (err == 0)
sigdelsetmask(&set, ~_BLOCKABLE);
set_current_blocked(&set); set_current_blocked(&set);
}
__get_user_error(regs->regs[0], &sf->uc.uc_mcontext.arm_r0, err); __get_user_error(regs->regs[0], &sf->uc.uc_mcontext.arm_r0, err);
__get_user_error(regs->regs[1], &sf->uc.uc_mcontext.arm_r1, err); __get_user_error(regs->regs[1], &sf->uc.uc_mcontext.arm_r1, err);