From: Nicholas Miell <nmiell@comcast.net>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Oleg Nesterov <oleg@tv-sign.ru>,
Davide Libenzi <davidel@xmailserver.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Fix signalfd interaction with thread-private signals
Date: Fri, 22 Jun 2007 16:42:07 -0700 [thread overview]
Message-ID: <1182555727.2735.3.camel@entropy> (raw)
In-Reply-To: <1182554371.24740.87.camel@localhost.localdomain>
On Sat, 2007-06-23 at 09:19 +1000, Benjamin Herrenschmidt wrote:
> On Sat, 2007-06-23 at 09:16 +1000, Benjamin Herrenschmidt wrote:
> > On Fri, 2007-06-22 at 15:47 -0700, Linus Torvalds wrote:
> > > Quite frankly, it strikes me that if we want to do this, then we shouldn't
> > > save the _process_ information at all, we should save the "sighand"
> > > instead.
> > >
> > > So either we save the process info, or we save the sighand, but saving the
> > > "group_leader" seems totally bogus. Especially as the group leader can
> > > change (by execve()).
> > >
> > > One thing that strikes me as I look at that function is that the whole
> > > signalfd thing doesn't seem to do any reference counting. Ie it looks
> > > totally buggy wrt passing the resulting fd off to somebody else, and then
> > > exiting in the original process.
> > >
> > > What did I miss?
> >
> > Probably nothing... doesn't look good. What are the lifetime rules of a
> > struct sighand tho ?
>
> Ah got it, signalfd_detach() in include/linux/signalfd.h from
> exit_signal plus some rcu bits in signalfd lock/unlock.
You could just get rid of the process/sighand/whatever reference
entirely and just make reads on a signalfd always dequeue signals for
the current thread.
You'd lose the ability to pass signalfds around to other processes, but
I'm not convinced that is even useful. (But I'm sure somebody smarter
than me has a valid use case and would love to share :-)
--
Nicholas Miell <nmiell@comcast.net>
next prev parent reply other threads:[~2007-06-22 23:52 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
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 [this message]
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=1182555727.2735.3.camel@entropy \
--to=nmiell@comcast.net \
--cc=benh@kernel.crashing.org \
--cc=davidel@xmailserver.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@tv-sign.ru \
--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