score: don't mask signals if we fail to setup signal stack
If setup_rt_frame() returns -EFAULT then we must not block any signals in the current process. Acked-by: Oleg Nesterov <oleg@redhat.com> Cc: Chen Liqin <liqin.chen@sunplusct.com> Cc: Lennox Wu <lennox.wu@gmail.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
97c47bb707
commit
80c1dfa91c
|
@ -272,12 +272,14 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
|
||||||
*/
|
*/
|
||||||
ret = setup_rt_frame(ka, regs, sig, oldset, info);
|
ret = setup_rt_frame(ka, regs, sig, oldset, info);
|
||||||
|
|
||||||
spin_lock_irq(¤t->sighand->siglock);
|
if (ret == 0) {
|
||||||
sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
|
spin_lock_irq(¤t->sighand->siglock);
|
||||||
if (!(ka->sa.sa_flags & SA_NODEFER))
|
sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask);
|
||||||
sigaddset(¤t->blocked, sig);
|
if (!(ka->sa.sa_flags & SA_NODEFER))
|
||||||
recalc_sigpending();
|
sigaddset(¤t->blocked, sig);
|
||||||
spin_unlock_irq(¤t->sighand->siglock);
|
recalc_sigpending();
|
||||||
|
spin_unlock_irq(¤t->sighand->siglock);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue