All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@tv-sign.ru>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Davide Libenzi <davidel@xmailserver.org>,
	Nicholas Miell <nmiell@comcast.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Fix signalfd interaction with thread-private signals
Date: Wed, 20 Jun 2007 15:14:15 +0400	[thread overview]
Message-ID: <20070620111415.GA91@tv-sign.ru> (raw)
In-Reply-To: <1182295473.26853.386.camel@localhost.localdomain>

On 06/20, Benjamin Herrenschmidt wrote:
>
> On Tue, 2007-06-19 at 18:06 +0400, Oleg Nesterov wrote:
> > On 06/19, Benjamin Herrenschmidt wrote:
> > >
> > > On Tue, 2007-06-19 at 13:14 +0400, Oleg Nesterov wrote:
> > > 
> > > > The commited "Fix signalfd interaction with thread-private signals"
> > > > (commit caec4e8dc85e0644ec24aeb36285e1ba02da58cc) doesn't implement
> > > > this.
> > > 
> > > Indeed, if you want what Davide described, you need to also change
> > > signalfd side. The patch I did merely prevents another thread from
> > > dequeuing somebody else private signals.
> > 
> > Yes I see, but why do we need this change? Yes, we can dequeue SIGSEGV
> > from another thread. Just don't do it if you have a handler for SIGSEGV?
> 
> Well, for such synchronous signals, it's a fairly stupid idea,
> especially since you can't predict who will get it. Signals such as SEGV
> are forced-in, which means they are force-unblocked. Thus, you can't
> know for sure whome of signalfd or the target thread will get it first,
> depending on who catches the siglock first I suppose. In one case,
> you'll manage to steal it, in the other, you'll thread will be killed.

Yes. As I said, I think this falls into the "just don't do that" category.
But nothing bad happens from the kernel POV.

Also, suppose that some thread does

	for (;;)
		signal(SIGSEGV, SIG_IGN);

Now we have the same situation. do_sigaction() can steal SIGSEGV from
another thread.


Perhaps, the proposed behaviour

	> Multiple threads can wait on the signalfd. Each one will dequeue either
	> its own private signals (tsk->pending) or the process shared ones
	> (tsk->signal->shared_pending).

is more convenient, I can't judge. If we implement this, sys_signalfd(-1) in
essence means "attach to the thread group, not current". This also makes sense.
But what we have now (with this patch applied) is a bit strange, imho.

Oleg.


  reply	other threads:[~2007-06-20 11:14 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-17  3:33 And now for something _totally_ different: Linux v2.6.22-rc5 Linus Torvalds
2007-06-17  7:15 ` Nicholas Miell
2007-06-17 17:01   ` Davide Libenzi
2007-06-17 19:26     ` Nicholas Miell
2007-06-17 23:49       ` Davide Libenzi
2007-06-18  0:08         ` Nicholas Miell
2007-06-18  0:20           ` Davide Libenzi
2007-06-18  0:43             ` Benjamin Herrenschmidt
2007-06-18  0:47               ` Davide Libenzi
2007-06-18 17:14               ` Linus Torvalds
2007-06-19  9:14                 ` Fix signalfd interaction with thread-private signals Oleg Nesterov
2007-06-19 12:09                   ` Benjamin Herrenschmidt
2007-06-19 14:06                     ` Oleg Nesterov
2007-06-19 19:53                       ` Davide Libenzi
2007-06-19 20:08                         ` Oleg Nesterov
2007-06-19 23:16                           ` Davide Libenzi
2007-06-19 23:24                       ` Benjamin Herrenschmidt
2007-06-20 11:14                         ` Oleg Nesterov [this message]
2007-06-20 17:38                           ` Linus Torvalds
2007-06-21  8:25                             ` Oleg Nesterov
2007-06-21 18:01                               ` Linus Torvalds
2007-06-21 18:23                                 ` Oleg Nesterov
2007-06-21 18:35                                   ` Linus Torvalds
2007-06-21 18:58                                     ` Oleg Nesterov
2007-06-21 23:30                                       ` Benjamin Herrenschmidt
2007-06-21 23:46                                         ` Linus Torvalds
2007-06-22  8:40                                         ` Oleg Nesterov
2007-06-22 11:41                                           ` Benjamin Herrenschmidt
2007-06-22 16:04                                             ` Oleg Nesterov
2007-06-22 22:33                                               ` Benjamin Herrenschmidt
2007-06-22 22:47                                                 ` Linus Torvalds
2007-06-22 23:00                                                   ` Davide Libenzi
2007-06-22 23:16                                                   ` Benjamin Herrenschmidt
2007-06-22 23:19                                                     ` Benjamin Herrenschmidt
2007-06-22 23:42                                                       ` Nicholas Miell
2007-06-23  0:12                                                         ` Davide Libenzi
2007-06-23  1:15                                                           ` Nicholas Miell
2007-06-23  6:05                                                           ` Benjamin Herrenschmidt
2007-06-23 22:54                                                             ` Nicholas Miell
2007-06-23 16:35                                                   ` Oleg Nesterov
2007-06-19 19:43                   ` Davide Libenzi
2007-06-19 19:59                     ` Oleg Nesterov
2007-06-19 23:49                   ` Davide Libenzi
2007-06-20  1:25                     ` Benjamin Herrenschmidt
2007-06-20  2:15                       ` Davide Libenzi
2007-06-20  3:46                         ` Benjamin Herrenschmidt
2007-06-20 15:54                           ` Davide Libenzi
2007-06-18 13:42         ` And now for something _totally_ different: Linux v2.6.22-rc5 Oleg Nesterov
2007-06-19 21:37 ` Mariusz Kozlowski
2007-06-19 21:48   ` Linus Torvalds
2007-06-19 22:31     ` Mariusz Kozlowski

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=20070620111415.GA91@tv-sign.ru \
    --to=oleg@tv-sign.ru \
    --cc=benh@kernel.crashing.org \
    --cc=davidel@xmailserver.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nmiell@comcast.net \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.