mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Matt Fleming <matt@console-pimps.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>, Tejun Heo <tj@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH 01/43] signal: Add block_sigmask() for adding sigmask to current->blocked
Date: Mon, 22 Aug 2011 11:19:22 +0100	[thread overview]
Message-ID: <1314008362.19751.22.camel@mfleming-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <1313772419-21951-2-git-send-email-matt@console-pimps.org>

(Adding linux-arch to Cc so arch maintainers will hopefully see this)

On Fri, 2011-08-19 at 17:46 +0100, Matt Fleming wrote:
> From: Matt Fleming <matt.fleming@intel.com>
> 
> This patch abstracts the code sequence for adding a signal handler's
> sa_mask to current->blocked because the sequence is identical for all
> architectures. Furthermore, in the past some architectures actually
> got this code wrong, so introduce a wrapper that all architectures can
> use.
> 
> Cc: Oleg Nesterov <oleg@redhat.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Tejun Heo <tj@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
> ---
>  arch/x86/kernel/signal.c |    6 +-----
>  include/linux/signal.h   |    1 +
>  kernel/signal.c          |   21 +++++++++++++++++++++
>  3 files changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
> index 54ddaeb2..46a01bd 100644
> --- a/arch/x86/kernel/signal.c
> +++ b/arch/x86/kernel/signal.c
> @@ -682,7 +682,6 @@ static int
>  handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
>  		struct pt_regs *regs)
>  {
> -	sigset_t blocked;
>  	int ret;
>  
>  	/* Are we from a system call? */
> @@ -733,10 +732,7 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
>  	 */
>  	regs->flags &= ~X86_EFLAGS_TF;
>  
> -	sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
> -	if (!(ka->sa.sa_flags & SA_NODEFER))
> -		sigaddset(&blocked, sig);
> -	set_current_blocked(&blocked);
> +	block_sigmask(ka, sig);
>  
>  	tracehook_signal_handler(sig, info, ka, regs,
>  				 test_thread_flag(TIF_SINGLESTEP));
> diff --git a/include/linux/signal.h b/include/linux/signal.h
> index a822300..7987ce74 100644
> --- a/include/linux/signal.h
> +++ b/include/linux/signal.h
> @@ -254,6 +254,7 @@ extern void set_current_blocked(const sigset_t *);
>  extern int show_unhandled_signals;
>  
>  extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie);
> +extern void block_sigmask(struct k_sigaction *ka, int signr);
>  extern void exit_signals(struct task_struct *tsk);
>  
>  extern struct kmem_cache *sighand_cachep;
> diff --git a/kernel/signal.c b/kernel/signal.c
> index 291c970..7a08164 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -2314,6 +2314,27 @@ relock:
>  	return signr;
>  }
>  
> +/**
> + * block_sigmask - add @ka's signal mask to current->blocked
> + * @ka: action for @signr
> + * @signr: signal that has been successfully delivered
> + *
> + * This function should be called when a signal has succesfully been
> + * delivered. It adds the mask of signals for @ka to current->blocked
> + * so that they are blocked during the execution of the signal
> + * handler. In addition, @signr will be blocked unless %SA_NODEFER is
> + * set in @ka->sa.sa_flags.
> + */
> +void block_sigmask(struct k_sigaction *ka, int signr)
> +{
> +	sigset_t blocked;
> +
> +	sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
> +	if (!(ka->sa.sa_flags & SA_NODEFER))
> +		sigaddset(&blocked, signr);
> +	set_current_blocked(&blocked);
> +}
> +
>  /*
>   * It could be that complete_signal() picked us to notify about the
>   * group-wide signal. Other threads should be notified now to take




  reply	other threads:[~2011-08-22 10:19 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-19 16:46 [PATCH v2 00/43] signal: set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH 01/43] signal: Add block_sigmask() for adding sigmask to current->blocked Matt Fleming
2011-08-22 10:19   ` Matt Fleming [this message]
2011-08-22 14:01     ` Oleg Nesterov
2011-08-22 14:04       ` Oleg Nesterov
2011-08-22 15:56       ` Matt Fleming
2011-08-19 16:46 ` [PATCH v2 02/43] alpha: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 03/43] arm: " Matt Fleming
2011-08-25 17:15   ` Will Deacon
2011-08-26 10:06     ` Matt Fleming
2011-08-26 14:18       ` Oleg Nesterov
2011-08-19 16:46 ` [PATCH v2 04/43] avr32: Don't mask signals in the error path Matt Fleming
2011-08-19 16:46 ` [PATCH v2 05/43] avr32: use set_current_blocked() in handle_signal/sys_rt_sigreturn Matt Fleming
2011-08-19 16:46 ` [PATCH v2 06/43] avr32: Use block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 07/43] blackfin: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-20  4:00   ` Mike Frysinger
2011-08-20  8:36     ` Matt Fleming
2011-08-20 17:31       ` Mike Frysinger
2011-08-19 16:46 ` [PATCH v2 08/43] cris: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 09/43] frv: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 10/43] h8300: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 11/43] ia64: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 12/43] m32r: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 13/43] m68k: " Matt Fleming
2011-08-24  4:38   ` Greg Ungerer
2011-08-19 16:46 ` [PATCH v2 14/43] microblaze: Don't reimplement force_sigsegv() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 15/43] microblaze: No need to reset handler if SA_ONESHOT Matt Fleming
2011-08-19 16:46 ` [PATCH v2 16/43] microblaze: Fix signal masking Matt Fleming
2011-08-19 16:46 ` [PATCH v2 17/43] microblaze: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-24  8:49   ` Michal Simek
2011-08-24 10:21     ` Matt Fleming
2011-08-24 13:53       ` Oleg Nesterov
2011-08-24 14:02         ` Michal Simek
2011-08-19 16:46 ` [PATCH v2 18/43] MIPS: " Matt Fleming
2011-08-19 17:27   ` Ralf Baechle
2011-08-19 16:46 ` [PATCH v2 19/43] mn10300: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 20/43] OpenRISC: Don't reimplement force_sigsegv() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 21/43] OpenRISC: No need to reset handler if SA_ONESHOT Matt Fleming
2011-08-19 16:46 ` [PATCH v2 22/43] OpenRISC: Don't mask signals if we fail to setup signal stack Matt Fleming
2011-08-19 16:46 ` [PATCH v2 23/43] OpenRISC: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 24/43] parisc: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 25/43] powerpc: " Matt Fleming
2011-08-19 16:46 ` [PATCH 26/43] [S390]: Use block_sigmask() Matt Fleming
2011-08-23  6:04   ` Martin Schwidefsky
2011-08-19 16:46 ` [PATCH v2 27/43] score: Don't mask signals if we fail to setup signal stack Matt Fleming
2011-08-19 16:46 ` [PATCH v2 28/43] score: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 29/43] sh: No need to reset handler if SA_ONESHOT Matt Fleming
2011-08-19 16:46 ` [PATCH v2 30/43] sh: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 31/43] sparc: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 32/43] tile: " Matt Fleming
2011-08-29 20:44   ` Chris Metcalf
2011-08-19 16:46 ` [PATCH v2 33/43] um: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 34/43] um: Don't restore current->blocked on error Matt Fleming
2011-08-19 16:46 ` [PATCH v2 35/43] unicore32: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-22  2:15   ` Guan Xuetao
2011-08-22 10:26     ` Matt Fleming
2011-08-24  2:03       ` Guan Xuetao
2011-08-19 16:46 ` [PATCH v2 36/43] xtensa: Don't reimplement force_sigsegv() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 37/43] xtensa: No need to reset handler if SA_ONESHOT Matt Fleming
2011-08-19 16:46 ` [PATCH v2 38/43] xtensa: Don't mask signals if we fail to setup signal stack Matt Fleming
2011-08-19 16:46 ` [PATCH v2 39/43] xtensa: Use set_current_blocked() and block_sigmask() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 40/43] autofs4: Use set_current_blocked() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 41/43] coda: " Matt Fleming
2011-08-19 16:46 ` [PATCH v2 42/43] dlm: Remove another superfluous call to recalc_sigpending() Matt Fleming
2011-08-19 16:46 ` [PATCH v2 43/43] ncpfs: Use set_current_blocked() Matt Fleming
2011-08-24 17:36   ` Oleg Nesterov
2011-08-24 17:52     ` Oleg Nesterov
2011-08-24 19:08       ` Matt Fleming
2011-08-24 18:24 ` [PATCH v2 00/43] signal: set_current_blocked() and block_sigmask() Oleg Nesterov
2011-08-25  4:30   ` Ian Kent
2011-08-25 15:31     ` Oleg Nesterov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314008362.19751.22.camel@mfleming-mobl1.ger.corp.intel.com \
    --to=matt@console-pimps.org \
    --cc=akpm@linux-foundation.org \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®