diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 16 | 
1 files changed, 7 insertions, 9 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index bf0cef8bbdf..242a706e772 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -817,17 +817,17 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig)  static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)  {  	struct signal_struct *sig; -	int ret;  	if (clone_flags & CLONE_THREAD) { -		ret = thread_group_cputime_clone_thread(current); -		if (likely(!ret)) { -			atomic_inc(¤t->signal->count); -			atomic_inc(¤t->signal->live); -		} -		return ret; +		atomic_inc(¤t->signal->count); +		atomic_inc(¤t->signal->live); +		return 0;  	}  	sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL); + +	if (sig) +		posix_cpu_timers_init_group(sig); +  	tsk->signal = sig;  	if (!sig)  		return -ENOMEM; @@ -864,8 +864,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)  	memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);  	task_unlock(current->group_leader); -	posix_cpu_timers_init_group(sig); -  	acct_init_pacct(&sig->pacct);  	tty_audit_fork(sig);  | 
