From: Pavel Emelyanov <xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
To: "Eric W. Biederman" <ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
Cc: Linux Containers
<containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>,
Oleg Nesterov <oleg-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
Subject: Re: [RFC][PATCH] fork: Don't special case CLONE_NEWPID for process or sessions
Date: Thu, 01 Nov 2007 13:28:00 +0300 [thread overview]
Message-ID: <4729AA30.6080301@openvz.org> (raw)
In-Reply-To: <m11wbhuy0z.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
Eric W. Biederman wrote:
Sorry for the late answer, I have just noticed that I forgot to
answer on this patch.
> Given that the kernel supports sys_setsid we don't need a special case
> in fork if we want to set: session == pgrp == pid.
>
> The historical (although not 2.6) linux behavior has been to start the
> init with session == pgrp == 0 which is effectively what removing this
> special case will do.
Hm... I overlooked this fact. Looks like the namespace's init will
have them set to 1.
> Is there any reason why we want/need this special case in fork? Or
Mainly to address the issue I describe below.
> can we remove it and save some code, make copy_process easier to read
> easier to maintain, and possibly a little faster?
>
> I know it is a little weird belong to a process groups that isn't
> visible in your pid namespace, but it there are no good reasons
> why it shouldn't work.
This is not good to have such a situation as the init will have
the ability to kill the tasks from the namespace he can't see,
e.g. his parent and the processes in that group.
> I think making this change makes the interface more flexible,
> and general.
>
> Signed-off-by: Eric W. Biederman <ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
> ---
> kernel/fork.c | 18 +++++-------------
> 1 files changed, 5 insertions(+), 13 deletions(-)
>
> diff --git a/kernel/fork.c b/kernel/fork.c
> index ddafdfa..b0de799 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1292,20 +1292,12 @@ static struct task_struct *copy_process(unsigned long clone_flags,
> if (thread_group_leader(p)) {
> if (clone_flags & CLONE_NEWPID) {
> p->nsproxy->pid_ns->child_reaper = p;
> - p->signal->tty = NULL;
> - set_task_pgrp(p, p->pid);
> - set_task_session(p, p->pid);
> - attach_pid(p, PIDTYPE_PGID, pid);
> - attach_pid(p, PIDTYPE_SID, pid);
> - } else {
> - p->signal->tty = current->signal->tty;
> - set_task_pgrp(p, task_pgrp_nr(current));
> - set_task_session(p, task_session_nr(current));
> - attach_pid(p, PIDTYPE_PGID,
> - task_pgrp(current));
> - attach_pid(p, PIDTYPE_SID,
> - task_session(current));
> }
> + p->signal->tty = current->signal->tty;
> + set_task_pgrp(p, task_pgrp_nr(current));
> + set_task_session(p, task_session_nr(current));
> + attach_pid(p, PIDTYPE_PGID, task_pgrp(current));
> + attach_pid(p, PIDTYPE_SID, task_session(current));
>
> list_add_tail_rcu(&p->tasks, &init_task.tasks);
> __get_cpu_var(process_counts)++;
next prev parent reply other threads:[~2007-11-01 10:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-27 1:49 [RFC][PATCH] fork: Don't special case CLONE_NEWPID for process or sessions Eric W. Biederman
[not found] ` <m11wbhuy0z.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
2007-11-01 10:28 ` Pavel Emelyanov [this message]
[not found] ` <4729AA30.6080301-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-11-01 15:14 ` Eric W. Biederman
[not found] ` <m1mytyf16m.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
2007-11-01 15:37 ` Pavel Emelyanov
[not found] ` <4729F2CF.2080101-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-11-01 17:03 ` Eric W. Biederman
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=4729AA30.6080301@openvz.org \
--to=xemul-gefaqzzx7r8dnm+yrofe0a@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=oleg-6lXkIZvqkOAvJsYlp49lxw@public.gmane.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.