From: Pavel Emelyanov <xemul@parallels.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Alan Cox <alan@linux.intel.com>,
Roland McGrath <roland@hack.frob.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Tejun Heo <tj@kernel.org>, Cyrill Gorcunov <gorcunov@openvz.org>,
James Bottomley <jbottomley@parallels.com>
Subject: Re: [RFC][PATCH 0/3] fork: Add the ability to create tasks with given pids
Date: Thu, 17 Nov 2011 20:01:03 +0400 [thread overview]
Message-ID: <4EC52FBF.1010407@parallels.com> (raw)
In-Reply-To: <20111117154936.GB12325@redhat.com>
On 11/17/2011 07:49 PM, Oleg Nesterov wrote:
> On 11/17, Pavel Emelyanov wrote:
>>
>> Gentlemen, please, find some time for this, your ACK/NACK on the API proposal
>> is required badly.
>
> Please.
>
>> The proposal is to introduce the CLONE_CHILD_USEPIDS flag for clone() syscall
>> and pass the pids values in the child_tidptr. In order not to introduce the
>> hole for the pid-reuse attack, using this flag will result in EPERM in case
>> the pid namespace we're trying to create pid in has at least one pid (except
>> for the init's one) generated with regular fork()/clone().
>>
>> Currently Tejun and Oleg are worrying only about the intrusiveness of this
>> approach, although Oleg agrees, that it solves all the problems it should. The
>> previous attempts to implement the similar stuff stopped, but no objections
>> against this were expressed. So the decision of whether it's OK to go this
>> way or not is required.
>
> Yes, personally I'd prefer /proc/set_last_pid (or something similar) which
> simply writes to pid_ns->last_pid. Perhaps it is less convenient from the
> user-space pov (serialization, security) but it is much simpler.
Yes, this is also possible. I have a working prototype of /proc/sys/kernel/ns_last_pid
with the security issue solved, but setting sysctl then cloning seems more obfuscating
to me than just passing an array of pids to clone.
> OTOH, I do not pretend I understand the user-space needs, so I won't argue.
> This series seems correct, the bugs we discussed are fixed.
>
> But. Speaking of API, it differs a bit compared to the previous version...
>
>> The API will be used like in the code below
>>
>> /* restore new pid namespace with an init in it */
>> pid = clone(CLONE_NEWPID);
>
> Yes, CLONE_NEWPID | CLONE_CHILD_USEPIDS is not possible.
It should be. If we (in theory, but) restore two pid namespaces with one being
a child of another we will have to create an init of the child ns with predefined
pid in the parent ns.
> Then how the array of pids in child_tidptr[] can be useful? If CLONE_NEWPID
> can't restore the pid_nr's in the parent namespaces, then probably this
> doesn't makes sense at all?
>
> IOW. I think we should either allow CLONE_NEWPID | CLONE_CHILD_USEPIDS
> (with additional check in set_pidmap() to ensure that CLONE_NEWPID
> comes with child_tidptr[0] == 1), or we should treat the "overloaded"
> child_tidptr as a simple pid_t.
The child_tidptr[0] == 1 check will also work. Currently I check for the
ns->child_reaper being NULL instead.
> Again, I won't insist. Just I want to be sure we do not miss something
> adding the new API.
>
> Oleg.
next prev parent reply other threads:[~2011-11-17 16:01 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-17 11:41 [RFC][PATCH 0/3] fork: Add the ability to create tasks with given pids Pavel Emelyanov
2011-11-17 11:42 ` [PATCH 1/3] pids: Make alloc_pid return error Pavel Emelyanov
2011-11-17 11:42 ` [PATCH 2/3] pids: Split alloc_pidmap into parts Pavel Emelyanov
2011-11-17 11:43 ` [PATCH 3/3] pids: Make it possible to clone tasks with given pids Pavel Emelyanov
2011-11-17 15:32 ` Oleg Nesterov
2011-11-17 15:49 ` Pavel Emelyanov
2011-11-17 16:00 ` Oleg Nesterov
2011-11-17 17:28 ` Linus Torvalds
2011-11-17 19:04 ` Oleg Nesterov
2011-11-17 18:36 ` Oleg Nesterov
2011-11-18 10:05 ` Pavel Emelyanov
2011-11-17 15:49 ` [RFC][PATCH 0/3] fork: Add the ability to create " Oleg Nesterov
2011-11-17 16:01 ` Pavel Emelyanov [this message]
2011-11-17 16:02 ` Oleg Nesterov
2011-11-18 23:30 ` Tejun Heo
2011-11-21 9:15 ` Pavel Emelyanov
2011-11-21 22:50 ` Tejun Heo
2011-11-22 11:11 ` Pavel Emelyanov
2011-11-22 12:04 ` Pedro Alves
2011-11-22 15:33 ` Tejun Heo
2011-11-23 16:20 ` Pedro Alves
2011-11-23 16:24 ` Tejun Heo
2011-11-23 17:26 ` Oleg Nesterov
2011-11-23 17:37 ` Tejun Heo
2011-11-23 18:19 ` Pavel Emelyanov
2011-11-23 20:14 ` Pavel Emelyanov
2011-11-24 17:31 ` Oleg Nesterov
2011-11-25 10:14 ` Pavel Emelyanov
2011-11-25 16:22 ` Oleg Nesterov
2011-11-25 16:44 ` Pavel Emelyanov
2011-11-25 16:54 ` Oleg Nesterov
2011-11-25 17:03 ` Pavel Emelyanov
2011-11-25 22:36 ` Pedro Alves
2011-11-27 16:24 ` [RFC][PATCH 0/3] fork: Add the ability to create tasks with?given pids Oleg Nesterov
2011-11-27 9:41 ` [RFC][PATCH 0/3] fork: Add the ability to create tasks with given pids Konstantin Khlebnikov
2011-11-27 17:34 ` Oleg Nesterov
2011-11-27 18:47 ` Tejun Heo
2011-11-28 10:38 ` Pavel Emelyanov
2011-11-28 16:25 ` Tejun Heo
2011-11-22 15:23 ` Tejun Heo
2011-11-22 15:29 ` Tejun Heo
2011-11-22 16:30 ` Pavel Emelyanov
2011-11-22 16:44 ` Linus Torvalds
2011-11-22 19:29 ` Pavel Emelyanov
2012-01-26 23:28 ` Kay Sievers
2011-11-22 21:16 ` 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=4EC52FBF.1010407@parallels.com \
--to=xemul@parallels.com \
--cc=akpm@linux-foundation.org \
--cc=alan@linux.intel.com \
--cc=gorcunov@openvz.org \
--cc=jbottomley@parallels.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=roland@hack.frob.com \
--cc=tj@kernel.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 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.