The patch titled Subject: tile: use set_current_blocked() and block_sigmask() has been added to the -mm tree. Its filename is tile-use-set_current_blocked-and-block_sigmask.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Matt Fleming <matt.fleming@xxxxxxxxx> Subject: tile: use set_current_blocked() and block_sigmask() As described in e6fa16ab ("signal: sigprocmask() should do retarget_shared_pending()") the modification of current->blocked is incorrect as we need to check whether the signal we're about to block is pending in the shared queue. Also, use the new helper function introduced in commit 5e6292c0f28f ("signal: add block_sigmask() for adding sigmask to current->blocked") which centralises the code for updating current->blocked after successfully delivering a signal and reduces the amount of duplicate code across architectures. In the past some architectures got this code wrong, so using this helper function should stop that from happening again. Acked-by: Oleg Nesterov <oleg@xxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Chris Metcalf <cmetcalf@xxxxxxxxxx> Signed-off-by: Matt Fleming <matt.fleming@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/tile/kernel/compat_signal.c | 5 +---- arch/tile/kernel/signal.c | 13 ++----------- 2 files changed, 3 insertions(+), 15 deletions(-) diff -puN arch/tile/kernel/compat_signal.c~tile-use-set_current_blocked-and-block_sigmask arch/tile/kernel/compat_signal.c --- a/arch/tile/kernel/compat_signal.c~tile-use-set_current_blocked-and-block_sigmask +++ a/arch/tile/kernel/compat_signal.c @@ -303,10 +303,7 @@ long compat_sys_rt_sigreturn(struct pt_r goto badframe; sigdelsetmask(&set, ~_BLOCKABLE); - spin_lock_irq(¤t->sighand->siglock); - current->blocked = set; - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); + set_current_blocked(&set); if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; diff -puN arch/tile/kernel/signal.c~tile-use-set_current_blocked-and-block_sigmask arch/tile/kernel/signal.c --- a/arch/tile/kernel/signal.c~tile-use-set_current_blocked-and-block_sigmask +++ a/arch/tile/kernel/signal.c @@ -97,10 +97,7 @@ SYSCALL_DEFINE1(rt_sigreturn, struct pt_ goto badframe; sigdelsetmask(&set, ~_BLOCKABLE); - spin_lock_irq(¤t->sighand->siglock); - current->blocked = set; - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); + set_current_blocked(&set); if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; @@ -286,13 +283,7 @@ static int handle_signal(unsigned long s * the work_pending path in the return-to-user code, and * either way we can re-enable interrupts unconditionally. */ - spin_lock_irq(¤t->sighand->siglock); - sigorsets(¤t->blocked, - ¤t->blocked, &ka->sa.sa_mask); - if (!(ka->sa.sa_flags & SA_NODEFER)) - sigaddset(¤t->blocked, sig); - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); + block_sigmask(ka, sig); } return ret; _ Subject: Subject: tile: use set_current_blocked() and block_sigmask() Patches currently in -mm which might be from matt.fleming@xxxxxxxxx are linux-next.patch alpha-use-set_current_blocked-and-block_sigmask.patch arm-use-set_current_blocked-and-block_sigmask.patch avr32-dont-mask-signals-in-the-error-path.patch avr32-use-set_current_blocked-in-handle_signal-sys_rt_sigreturn.patch avr32-use-block_sigmask.patch blackfin-use-set_current_blocked-and-block_sigmask.patch c6x-use-set_current_blocked-and-block_sigmask.patch cris-use-set_current_blocked-and-block_sigmask.patch frv-use-set_current_blocked-and-block_sigmask.patch h8300-use-set_current_blocked-and-block_sigmask.patch hexagon-use-set_current_blocked-and-block_sigmask.patch ia64-use-set_current_blocked-and-block_sigmask.patch m32r-use-set_current_blocked-and-block_sigmask.patch m68k-use-set_current_blocked-and-block_sigmask.patch microblaze-dont-reimplement-force_sigsegv.patch microblaze-no-need-to-reset-handler-if-sa_oneshot.patch microblaze-fix-signal-masking.patch microblaze-use-set_current_blocked-and-block_sigmask.patch mips-use-set_current_blocked-and-block_sigmask.patch mn10300-use-set_current_blocked-and-block_sigmask.patch openrisc-dont-reimplement-force_sigsegv.patch openrisc-no-need-to-reset-handler-if-sa_oneshot.patch openrisc-dont-mask-signals-if-we-fail-to-setup-signal-stack.patch openrisc-use-set_current_blocked-and-block_sigmask.patch parisc-use-set_current_blocked-and-block_sigmask.patch powerpc-use-set_current_blocked-and-block_sigmask.patch use-block_sigmask.patch score-dont-mask-signals-if-we-fail-to-setup-signal-stack.patch score-use-set_current_blocked-and-block_sigmask.patch sh-no-need-to-reset-handler-if-sa_oneshot.patch sh-use-set_current_blocked-and-block_sigmask.patch sparc-use-block_sigmask.patch tile-use-set_current_blocked-and-block_sigmask.patch um-dont-restore-current-blocked-on-error.patch um-use-set_current_blocked-and-block_sigmask.patch unicore32-use-block_sigmask.patch xtensa-dont-reimplement-force_sigsegv.patch xtensa-no-need-to-reset-handler-if-sa_oneshot.patch xtensa-dont-mask-signals-if-we-fail-to-setup-signal-stack.patch xtensa-use-set_current_blocked-and-block_sigmask.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html