From: Oleg Nesterov <oleg@redhat.com>
To: Matt Fleming <matt@console-pimps.org>
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 16:01:58 +0200 [thread overview]
Message-ID: <20110822140158.GA29312@redhat.com> (raw)
In-Reply-To: <1314008362.19751.22.camel@mfleming-mobl1.ger.corp.intel.com>
On 08/22, Matt Fleming wrote:
>
> (Adding linux-arch to Cc so arch maintainers will hopefully see this)
Yes, thanks.
So far I applied only this patch to
git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc.git ptrace
But I am going to take the whole series unless I have the nack from
maintainers. Everything looks correct.
IOW, I am going to wait a bit to collect the ACKs from the maintainers
in case (I hope ;) they want to review these changes.
OK?
Oleg.
> 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, ¤t->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, ¤t->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
>
>
>
next prev parent reply other threads:[~2011-08-22 14:05 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
2011-08-22 14:01 ` Oleg Nesterov [this message]
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=20110822140158.GA29312@redhat.com \
--to=oleg@redhat.com \
--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=matt@console-pimps.org \
--cc=mingo@elte.hu \
--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