aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/fork.c')
-rw-r--r--kernel/fork.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 8e6b6f4fb272..da4a6a10d088 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -162,7 +162,6 @@ static void account_kernel_stack(struct thread_info *ti, int account)
162 162
163void free_task(struct task_struct *tsk) 163void free_task(struct task_struct *tsk)
164{ 164{
165 prop_local_destroy_single(&tsk->dirties);
166 account_kernel_stack(tsk->stack, -1); 165 account_kernel_stack(tsk->stack, -1);
167 free_thread_info(tsk->stack); 166 free_thread_info(tsk->stack);
168 rt_mutex_debug_task_free(tsk); 167 rt_mutex_debug_task_free(tsk);
@@ -274,10 +273,6 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
274 273
275 tsk->stack = ti; 274 tsk->stack = ti;
276 275
277 err = prop_local_init_single(&tsk->dirties);
278 if (err)
279 goto out;
280
281 setup_thread_stack(tsk, orig); 276 setup_thread_stack(tsk, orig);
282 clear_user_return_notifier(tsk); 277 clear_user_return_notifier(tsk);
283 clear_tsk_need_resched(tsk); 278 clear_tsk_need_resched(tsk);
@@ -501,7 +496,6 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p)
501 mm->cached_hole_size = ~0UL; 496 mm->cached_hole_size = ~0UL;
502 mm_init_aio(mm); 497 mm_init_aio(mm);
503 mm_init_owner(mm, p); 498 mm_init_owner(mm, p);
504 atomic_set(&mm->oom_disable_count, 0);
505 499
506 if (likely(!mm_alloc_pgd(mm))) { 500 if (likely(!mm_alloc_pgd(mm))) {
507 mm->def_flags = 0; 501 mm->def_flags = 0;
@@ -816,8 +810,6 @@ good_mm:
816 /* Initializing for Swap token stuff */ 810 /* Initializing for Swap token stuff */
817 mm->token_priority = 0; 811 mm->token_priority = 0;
818 mm->last_interval = 0; 812 mm->last_interval = 0;
819 if (tsk->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
820 atomic_inc(&mm->oom_disable_count);
821 813
822 tsk->mm = mm; 814 tsk->mm = mm;
823 tsk->active_mm = mm; 815 tsk->active_mm = mm;
@@ -1302,6 +1294,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1302 p->pdeath_signal = 0; 1294 p->pdeath_signal = 0;
1303 p->exit_state = 0; 1295 p->exit_state = 0;
1304 1296
1297 p->nr_dirtied = 0;
1298 p->nr_dirtied_pause = 128 >> (PAGE_SHIFT - 10);
1299
1305 /* 1300 /*
1306 * Ok, make it visible to the rest of the system. 1301 * Ok, make it visible to the rest of the system.
1307 * We dont wake it up yet. 1302 * We dont wake it up yet.
@@ -1391,13 +1386,8 @@ bad_fork_cleanup_io:
1391bad_fork_cleanup_namespaces: 1386bad_fork_cleanup_namespaces:
1392 exit_task_namespaces(p); 1387 exit_task_namespaces(p);
1393bad_fork_cleanup_mm: 1388bad_fork_cleanup_mm:
1394 if (p->mm) { 1389 if (p->mm)
1395 task_lock(p);
1396 if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
1397 atomic_dec(&p->mm->oom_disable_count);
1398 task_unlock(p);
1399 mmput(p->mm); 1390 mmput(p->mm);
1400 }
1401bad_fork_cleanup_signal: 1391bad_fork_cleanup_signal:
1402 if (!(clone_flags & CLONE_THREAD)) 1392 if (!(clone_flags & CLONE_THREAD))
1403 free_signal_struct(p->signal); 1393 free_signal_struct(p->signal);