From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Nicholas Miell <nmiell@comcast.net>
Cc: Davide Libenzi <davidel@xmailserver.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Paul Mackerras <paulus@samba.org>
Subject: Re: signalfd API issues (was Re: [PATCH/RFC] signal races/bugs, losing TIF_SIGPENDING and other woes)
Date: Wed, 06 Jun 2007 12:50:04 +1000 [thread overview]
Message-ID: <1181098204.31677.158.camel@localhost.localdomain> (raw)
In-Reply-To: <1181091523.2788.28.camel@entropy>
On Tue, 2007-06-05 at 17:58 -0700, Nicholas Miell wrote:
>
> "At the time of generation, a determination shall be made whether the
> signal has been generated for the process or for a specific thread
> within the process. Signals which are generated by some action
> attributable to a particular thread, such as a hardware fault, shall
> be generated for the thread that caused the signal to be generated.
Yeah, synchronous signals should probably never be delivered to another
process, even via signalfd. There's no point delivering a SEGV to
somebody else :-)
I'm actually thinking we shoud -also- only handle shared signals in
dequeue_signal() when called from a different task.
> dequeue_signal(tsk, ...) looks for signals first in tsk->pending and
> then in tsk->signal->shared_pending.
>
> sys_signalfd() stores current in signalfd_ctx. signalfd_read() passes
> that context to signalfd_dequeue, which passes that that saved
> task_struct pointer to dequeue_signal.
>
> This means that a signalfd will deliver signals targeted towards
> either the original thread that created that signalfd, or signals
> targeted towards the process as a whole.
>
> This means that a single signalfd is not adequate to handle signal
> delivery for all threads in a process, because signals targeted
> towards threads other than the thread that originally created the
> signalfd will never be queued to that signalfd.
Well.. you certainly need to instanciate a signalfd for every thread in
the process if you want to get shared signals for sure.
BTW. Not directly related, but that notifier thing ... it looks really
really dodgy. It's also only ever used by the DRM. Somebody around knows
why that's in and why the DRM cannot just use normal signal blocking
techniques ?
Cheers,
Ben.
next prev parent reply other threads:[~2007-06-06 2:50 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-05 1:25 [PATCH/RFC] signal races/bugs, losing TIF_SIGPENDING and other woes Benjamin Herrenschmidt
2007-06-05 1:44 ` Linus Torvalds
2007-06-05 2:10 ` Benjamin Herrenschmidt
2007-06-05 2:38 ` Davide Libenzi
2007-06-05 3:22 ` Benjamin Herrenschmidt
2007-06-05 6:09 ` Nicholas Miell
2007-06-05 7:27 ` Benjamin Herrenschmidt
2007-06-05 23:51 ` Nicholas Miell
2007-06-06 0:03 ` Benjamin Herrenschmidt
2007-06-06 0:11 ` Davide Libenzi
2007-06-06 0:15 ` Nicholas Miell
2007-06-06 0:37 ` Davide Libenzi
2007-06-06 0:58 ` signalfd API issues (was Re: [PATCH/RFC] signal races/bugs, losing TIF_SIGPENDING and other woes) Nicholas Miell
2007-06-06 2:50 ` Benjamin Herrenschmidt [this message]
2007-06-06 3:29 ` Davide Libenzi
2007-06-06 3:37 ` Linus Torvalds
2007-06-06 4:08 ` Nicholas Miell
2007-06-06 4:18 ` Benjamin Herrenschmidt
2007-06-06 4:35 ` Davide Libenzi
2007-06-06 6:47 ` Benjamin Herrenschmidt
2007-06-06 22:36 ` Davide Libenzi
2007-06-06 3:52 ` Benjamin Herrenschmidt
2007-06-06 12:52 ` Jeff Dike
2007-06-06 22:43 ` Paul Mackerras
2007-06-07 2:20 ` Jeff Dike
2007-06-07 3:29 ` Benjamin Herrenschmidt
2007-06-07 13:59 ` Jeff Dike
2007-06-07 3:21 ` Benjamin Herrenschmidt
2007-06-05 15:52 ` [PATCH/RFC] signal races/bugs, losing TIF_SIGPENDING and other woes Davide Libenzi
2007-06-05 22:15 ` Benjamin Herrenschmidt
2007-06-05 22:50 ` Davide Libenzi
2007-06-05 22:59 ` Benjamin Herrenschmidt
2007-06-06 0:11 ` Davide Libenzi
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=1181098204.31677.158.camel@localhost.localdomain \
--to=benh@kernel.crashing.org \
--cc=akpm@linux-foundation.org \
--cc=davidel@xmailserver.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nmiell@comcast.net \
--cc=paulus@samba.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox