diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 24 | 
1 files changed, 10 insertions, 14 deletions
| diff --git a/kernel/fork.c b/kernel/fork.c index 4018308048cf..242a706e7721 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); @@ -901,7 +899,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)  	clear_freeze_flag(p);  } -asmlinkage long sys_set_tid_address(int __user *tidptr) +SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)  {  	current->clear_child_tid = tidptr; @@ -1481,12 +1479,10 @@ void __init proc_caches_init(void)  	fs_cachep = kmem_cache_create("fs_cache",  			sizeof(struct fs_struct), 0,  			SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); -	vm_area_cachep = kmem_cache_create("vm_area_struct", -			sizeof(struct vm_area_struct), 0, -			SLAB_PANIC, NULL);  	mm_cachep = kmem_cache_create("mm_struct",  			sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,  			SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); +	mmap_init();  }  /* @@ -1605,7 +1601,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp   * constructed. Here we are modifying the current, active,   * task_struct.   */ -asmlinkage long sys_unshare(unsigned long unshare_flags) +SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)  {  	int err = 0;  	struct fs_struct *fs, *new_fs = NULL; | 
