All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Chris Evans <scarybeasts@gmail.com>,
	David Howells <dhowells@redhat.com>,
	Don Howard <dhoward@redhat.com>, Eugene Teo <eugene@redhat.com>,
	Michael Kerrisk <mtk.manpages@googlemail.com>,
	Tavis Ormandy <taviso@sdf.lonestar.org>,
	Vitaly Mayatskikh <vmayatsk@redhat.com>,
	stable@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] copy_process: fix CLONE_PARENT && ->exit_signal interaction
Date: Wed, 25 Feb 2009 20:48:51 +0100	[thread overview]
Message-ID: <20090225194851.GA9139@redhat.com> (raw)
In-Reply-To: <20090225193927.1ED25FC3DA@magilla.sf.frob.com>

On 02/25, Roland McGrath wrote:
>
> As I think I said before, I don't really know what the actual use case is
> for CLONE_PARENT without CLONE_THREAD.  So it's easy to approve changing
> its behavior, but I do vaguely worry about who expected what behavior before.

Me too ;)

Hopefully CC is wide enough...

> Just for readability, I would prefer that you just change the first line
> above that sets p->exit_signal initially.  i.e. (but with some comments):
>
> diff --git a/kernel/fork.c b/kernel/fork.c
> index a66fbde..f56793b 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1184,7 +1184,10 @@ static struct task_struct *copy_process(unsigned long clone_flags,
>  	p->parent_exec_id = p->self_exec_id;
>
>  	/* ok, now we should be set up.. */
> -	p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
> +	p->exit_signal = ((clone_flags & CLONE_THREAD) ? -1 :
> +			  (clone_flags & CLONE_PARENT) ?
> +			  current->group_leader->exit_signal :
> +			  (clone_flags & CSIGNAL));

Yes, I sent this patch to rhel list because it is most simple.

But afaics this is not exactly right.

The task T has ->exit_signal != SIGCHLD, say, SIGHUP. It does
clone(CLONE_PARENT), copy_process() sets ->exit_signal = SIGHUP.

T->parent exits, T is re-parented to /sbin/init, and its ->exit_signal
is changed to SIGCHLD.

copy_process() continues, takes tasklist, notices CLONE_PARENT and
sets ->real_parent = init. But child's ->exit_signal is still SIGHUP.

Oleg.


  reply	other threads:[~2009-02-25 19:52 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-25 19:02 [PATCH 1/2] copy_process: fix CLONE_PARENT && ->exit_signal interaction Oleg Nesterov
2009-02-25 19:39 ` Roland McGrath
2009-02-25 19:48   ` Oleg Nesterov [this message]
2009-02-25 19:54     ` Roland McGrath
2009-02-25 20:06   ` Linus Torvalds
2009-02-25 21:20     ` Oleg Nesterov
2009-02-25 21:34       ` [stable] " Greg KH
2009-02-26 21:59       ` Oleg Nesterov
2009-02-26 22:12         ` Linus Torvalds
2009-02-26 22:30           ` Oleg Nesterov
2009-02-26 22:43             ` Linus Torvalds
2009-03-02 21:22             ` [PATCH] copy_process: fix CLONE_PARENT && parent_exec_id interaction Oleg Nesterov
2009-03-02 21:33               ` Linus Torvalds
2009-03-02 21:58                 ` Oleg Nesterov
2009-03-09 16:45                   ` David Howells
2009-03-09 18:33                     ` 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=20090225194851.GA9139@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=dhoward@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=eugene@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtk.manpages@googlemail.com \
    --cc=roland@redhat.com \
    --cc=scarybeasts@gmail.com \
    --cc=stable@kernel.org \
    --cc=taviso@sdf.lonestar.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vmayatsk@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.