All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Roland McGrath <roland@redhat.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Oren Laadan <orenl@cs.columbia.edu>,
	serue@us.ibm.com, Alexey Dobriyan <adobriyan@gmail.com>,
	Containers <containers@lists.linux-foundation.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH] Disable CLONE_PARENT for init
Date: Wed, 1 Jul 2009 14:48:05 -0700	[thread overview]
Message-ID: <20090701214805.GA25734@us.ibm.com> (raw)
In-Reply-To: <20090701082452.GA3297@redhat.com>

| This won't fix the problem. The child won't autoreap itself if ->exit_signal
| != SIGCHLD.
| 
| > If you want to make this change because of container-init issues, I think
| > you should just say so independent of this global-init case.
| 
| Yes, agreed, the comment looks confusing.
| 
| Oleg

Here is an updated patch with comments fixed.

Roland pls ack again if this is better.

---

Disable CLONE_PARENT for init.

When global or container-init processes use CLONE_PARENT, they create a
multi-rooted process tree. Besides if the siblings of init exit, the
SIGCHLD is not sent to init process resulting in the zombies sticking
around indefinitely.

Changelog[v3]:
	- [Roland, Oleg] Simplify comment describing the change
Changelog[v2]:
	- Simplify patch description based on comments from Eric Biederman
	  and Oleg Nesterov.
	- [Oleg Nesterov] Use SIGNAL_UNKILLABLE instead of is_global_init()

Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
---
 kernel/fork.c |    8 ++++++++
 1 file changed, 8 insertions(+)

Index: linux-mmotm/kernel/fork.c
===================================================================
--- linux-mmotm.orig/kernel/fork.c	2009-06-30 23:01:06.000000000 -0700
+++ linux-mmotm/kernel/fork.c	2009-07-01 14:43:10.000000000 -0700
@@ -974,6 +974,14 @@ static struct task_struct *copy_process(
 	if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
 		return ERR_PTR(-EINVAL);
 
+	/*
+	 * To avoid multi-rooted process-trees prevent global and container
+	 * inits from creating siblings.
+	 */
+	if ((clone_flags & CLONE_PARENT) &&
+				current->signal->flags & SIGNAL_UNKILLABLE)
+		return ERR_PTR(-EINVAL);
+
 	retval = security_task_create(clone_flags);
 	if (retval)
 		goto fork_out;

  reply	other threads:[~2009-07-01 21:52 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-01  7:31 [RFC][PATCH] Disable CLONE_PARENT for init Sukadev Bhattiprolu
2009-07-01  7:31 ` Sukadev Bhattiprolu
     [not found] ` <20090701073140.GA14284-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-01  7:46   ` Roland McGrath
2009-07-01  7:46     ` Roland McGrath
2009-07-01  8:01     ` Sukadev Bhattiprolu
     [not found]     ` <20090701074654.A6C6321D57-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-07-01  8:01       ` Sukadev Bhattiprolu
2009-07-01  8:24       ` Oleg Nesterov
2009-07-01  8:24     ` Oleg Nesterov
2009-07-01 21:48       ` Sukadev Bhattiprolu [this message]
     [not found]         ` <20090701214805.GA25734-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-01 21:58           ` Roland McGrath
2009-07-01 21:58             ` Roland McGrath
     [not found]             ` <20090701215833.876DA404FD-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
2009-07-02  0:35               ` Sukadev Bhattiprolu
2009-07-02  0:35             ` Sukadev Bhattiprolu
     [not found]               ` <20090702003520.GA26247-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-02  0:49                 ` Roland McGrath
2009-07-02  0:49                   ` Roland McGrath
2009-07-02  7:58                 ` Oleg Nesterov
2009-07-02  7:58               ` Oleg Nesterov
     [not found]                 ` <20090702075833.GA14620-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-07-02 12:36                   ` Oleg Nesterov
2009-07-02 12:36                 ` Oleg Nesterov
2009-07-01 23:27           ` Eric W. Biederman
2009-07-01 23:27         ` Eric W. Biederman
     [not found]       ` <20090701082452.GA3297-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-07-01 21:48         ` Sukadev Bhattiprolu

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=20090701214805.GA25734@us.ibm.com \
    --to=sukadev@linux.vnet.ibm.com \
    --cc=adobriyan@gmail.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleg@redhat.com \
    --cc=orenl@cs.columbia.edu \
    --cc=roland@redhat.com \
    --cc=serue@us.ibm.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.