diff options
| author | Eric W. Biederman <ebiederm@xmission.com> | 2010-07-12 17:10:36 -0700 | 
|---|---|---|
| committer | Eric W. Biederman <ebiederm@xmission.com> | 2012-11-19 05:59:15 -0800 | 
| commit | 1c4042c29bd2e85aac4110552ca8ade763762e84 (patch) | |
| tree | 90b34aeae51c9afa088eac37be4e8a14a038e6be /kernel/fork.c | |
| parent | 57e8391d327609cbf12d843259c968b9e5c1838f (diff) | |
| download | olio-linux-3.10-1c4042c29bd2e85aac4110552ca8ade763762e84.tar.xz olio-linux-3.10-1c4042c29bd2e85aac4110552ca8ade763762e84.zip  | |
pidns: Consolidate initialzation of special init task state
Instead of setting child_reaper and SIGNAL_UNKILLABLE one way
for the system init process, and another way for pid namespace
init processes test pid->nr == 1 and use the same code for both.
For the global init this results in SIGNAL_UNKILLABLE being set
much earlier in the initialization process.
This is a small cleanup and it paves the way for allowing unshare and
enter of the pid namespace as that path like our global init also will
not set CLONE_NEWPID.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 666dc8b0660..0f2bbce311f 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1039,8 +1039,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)  	atomic_set(&sig->live, 1);  	atomic_set(&sig->sigcnt, 1);  	init_waitqueue_head(&sig->wait_chldexit); -	if (clone_flags & CLONE_NEWPID) -		sig->flags |= SIGNAL_UNKILLABLE;  	sig->curr_target = tsk;  	init_sigpending(&sig->shared_pending);  	INIT_LIST_HEAD(&sig->posix_timers); @@ -1441,8 +1439,10 @@ static struct task_struct *copy_process(unsigned long clone_flags,  		ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);  		if (thread_group_leader(p)) { -			if (is_child_reaper(pid)) +			if (is_child_reaper(pid)) {  				ns_of_pid(pid)->child_reaper = p; +				p->signal->flags |= SIGNAL_UNKILLABLE; +			}  			p->signal->leader_pid = pid;  			p->signal->tty = tty_kref_get(current->signal->tty);  |