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 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 | ||
163 | void free_task(struct task_struct *tsk) | 163 | void 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: | |||
1391 | bad_fork_cleanup_namespaces: | 1386 | bad_fork_cleanup_namespaces: |
1392 | exit_task_namespaces(p); | 1387 | exit_task_namespaces(p); |
1393 | bad_fork_cleanup_mm: | 1388 | bad_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 | } | ||
1401 | bad_fork_cleanup_signal: | 1391 | bad_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); |