mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 11:16:11 +00:00
fork(): disable CLONE_PARENT for init
When global or container-init processes use CLONE_PARENT, they create a multi-rooted process tree. Besides siblings of global init remain as zombies on exit since they are not reaped by their parent (swapper). So prevent global and container-inits from creating siblings. Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com> Acked-by: Eric W. Biederman <ebiederm@xmission.com> Acked-by: Roland McGrath <roland@redhat.com> Cc: Oren Laadan <orenl@cs.columbia.edu> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Serge Hallyn <serue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8d65af789f
commit
123be07b0b
1 changed files with 10 additions and 0 deletions
|
@ -979,6 +979,16 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
||||||
if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
|
if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Siblings of global init remain as zombies on exit since they are
|
||||||
|
* not reaped by their parent (swapper). To solve this and 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);
|
retval = security_task_create(clone_flags);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto fork_out;
|
goto fork_out;
|
||||||
|
|
Loading…
Reference in a new issue