diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 18 | 
1 files changed, 4 insertions, 14 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 8e6b6f4fb27..da4a6a10d08 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -162,7 +162,6 @@ static void account_kernel_stack(struct thread_info *ti, int account)  void free_task(struct task_struct *tsk)  { -	prop_local_destroy_single(&tsk->dirties);  	account_kernel_stack(tsk->stack, -1);  	free_thread_info(tsk->stack);  	rt_mutex_debug_task_free(tsk); @@ -274,10 +273,6 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)  	tsk->stack = ti; -	err = prop_local_init_single(&tsk->dirties); -	if (err) -		goto out; -  	setup_thread_stack(tsk, orig);  	clear_user_return_notifier(tsk);  	clear_tsk_need_resched(tsk); @@ -501,7 +496,6 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p)  	mm->cached_hole_size = ~0UL;  	mm_init_aio(mm);  	mm_init_owner(mm, p); -	atomic_set(&mm->oom_disable_count, 0);  	if (likely(!mm_alloc_pgd(mm))) {  		mm->def_flags = 0; @@ -816,8 +810,6 @@ good_mm:  	/* Initializing for Swap token stuff */  	mm->token_priority = 0;  	mm->last_interval = 0; -	if (tsk->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) -		atomic_inc(&mm->oom_disable_count);  	tsk->mm = mm;  	tsk->active_mm = mm; @@ -1302,6 +1294,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,  	p->pdeath_signal = 0;  	p->exit_state = 0; +	p->nr_dirtied = 0; +	p->nr_dirtied_pause = 128 >> (PAGE_SHIFT - 10); +  	/*  	 * Ok, make it visible to the rest of the system.  	 * We dont wake it up yet. @@ -1391,13 +1386,8 @@ bad_fork_cleanup_io:  bad_fork_cleanup_namespaces:  	exit_task_namespaces(p);  bad_fork_cleanup_mm: -	if (p->mm) { -		task_lock(p); -		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) -			atomic_dec(&p->mm->oom_disable_count); -		task_unlock(p); +	if (p->mm)  		mmput(p->mm); -	}  bad_fork_cleanup_signal:  	if (!(clone_flags & CLONE_THREAD))  		free_signal_struct(p->signal);  | 
