From: Oleg Nesterov <oleg@tv-sign.ru>
To: Roland McGrath <roland@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"linux-os (Dick Johnson)" <linux-os@analogic.com>,
linux-kernel@vger.kernel.org
Subject: Re: Kernel threads
Date: Fri, 9 Mar 2007 23:52:05 +0300 [thread overview]
Message-ID: <20070309205205.GA173@tv-sign.ru> (raw)
In-Reply-To: <20070309003100.9893B180063@magilla.sf.frob.com>
On 03/08, Roland McGrath wrote:
>
> Your change seems fine to me. I certainly concur that it seems insane
> for init to be responsible for tasks created magically inside the
> kernel. The history I've found says that the setting to SIGCHLD was
> introduced as part of "v2.5.1.9 -> v2.5.1.10", without detailed
> commentary in the log. This was probably before the auto-reaping
> semantics worked as they do now. So like the man said, at the time,
> it seemed the logical thing to do.
>
> To be paranoid, I wouldn't make this change in any stable kernel series.
> It changes behavior visible to userland (init) from how it has been
> consistently for five years, so, who knows, something might notice.
> The old behavior is pretty harmless, albeit changing it seems both
> preferable and harmless.
Yes sure, this change shoud be tested in -mm tree (I'll send the patch
on Sunday after some testing). The only (afaics) problem is that with
this change a kernel thread must not do do_fork(CLONE_THREAD). I think
it should not, but currently this is technically possible. Perhaps it
makes sense to add BUG_ON(CLONE_THREAD && group_leader->exit_signal==-1)
in copy_process().
On a related note,
zap_other_threads:
if (t != p->group_leader)
t->exit_signal = -1;
looks like another leftover to me, we already depend on the fact that
all sub-threads have ->exit_signal == -1 (otherwise, for example, a
thread group just can't exit properly).
While we are talking about kernel threads, there is something I can't
undestand. kthread/daemonize use sigprocmask(SIG_BLOCK) to protect
against signals. This doesn't look right to me, because this doesn't
prevent the signal delivery, this only blocks signal_wake_up(). Every
"killall -33 khelper" means a "struct siginfo" leak.
Imho, the kernel thread shouldn't play with ->blocked at all. Instead
it should set SIG_IGN for all handlers. If it really needs, say, SIGCHLD,
it should call allow_signal() anyway. Do you see any problems with this
approach?
Oleg.
next prev parent reply other threads:[~2007-03-09 20:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-08 16:38 Kernel threads Oleg Nesterov
2007-03-09 0:31 ` Roland McGrath
2007-03-09 20:52 ` Oleg Nesterov [this message]
2007-03-09 21:38 ` Roland McGrath
2007-03-09 23:46 ` Oleg Nesterov
-- strict thread matches above, loose matches on Subject: below --
2007-03-06 16:03 linux-os (Dick Johnson)
2007-03-08 9:00 ` Andrew Morton
2003-04-25 7:53 Kernel Threads Romero, Miguel Angel
2002-11-20 9:36 kernel threads Madhavi
2002-04-12 17:07 Vahid Fereydunkolahi
2002-04-12 17:45 ` Masoud Sharbiani
2001-12-13 7:05 blesson paul
[not found] <no.id>
2001-08-16 22:37 ` Alan Cox
2001-08-21 12:15 ` Christian Widmer
2001-08-16 22:23 Christian Widmer
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=20070309205205.GA173@tv-sign.ru \
--to=oleg@tv-sign.ru \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-os@analogic.com \
--cc=roland@redhat.com \
/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.