diff options
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 6067e429f281..156db96ff754 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -381,14 +381,13 @@ static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p) | |||
381 | mm->ioctx_list = NULL; | 381 | mm->ioctx_list = NULL; |
382 | mm->free_area_cache = TASK_UNMAPPED_BASE; | 382 | mm->free_area_cache = TASK_UNMAPPED_BASE; |
383 | mm->cached_hole_size = ~0UL; | 383 | mm->cached_hole_size = ~0UL; |
384 | mm_init_cgroup(mm, p); | 384 | mm_init_owner(mm, p); |
385 | 385 | ||
386 | if (likely(!mm_alloc_pgd(mm))) { | 386 | if (likely(!mm_alloc_pgd(mm))) { |
387 | mm->def_flags = 0; | 387 | mm->def_flags = 0; |
388 | return mm; | 388 | return mm; |
389 | } | 389 | } |
390 | 390 | ||
391 | mm_free_cgroup(mm); | ||
392 | free_mm(mm); | 391 | free_mm(mm); |
393 | return NULL; | 392 | return NULL; |
394 | } | 393 | } |
@@ -438,7 +437,6 @@ void mmput(struct mm_struct *mm) | |||
438 | spin_unlock(&mmlist_lock); | 437 | spin_unlock(&mmlist_lock); |
439 | } | 438 | } |
440 | put_swap_token(mm); | 439 | put_swap_token(mm); |
441 | mm_free_cgroup(mm); | ||
442 | mmdrop(mm); | 440 | mmdrop(mm); |
443 | } | 441 | } |
444 | } | 442 | } |
@@ -982,6 +980,13 @@ static void rt_mutex_init_task(struct task_struct *p) | |||
982 | #endif | 980 | #endif |
983 | } | 981 | } |
984 | 982 | ||
983 | #ifdef CONFIG_MM_OWNER | ||
984 | void mm_init_owner(struct mm_struct *mm, struct task_struct *p) | ||
985 | { | ||
986 | mm->owner = p; | ||
987 | } | ||
988 | #endif /* CONFIG_MM_OWNER */ | ||
989 | |||
985 | /* | 990 | /* |
986 | * This creates a new process as a copy of the old one, | 991 | * This creates a new process as a copy of the old one, |
987 | * but does not actually start it yet. | 992 | * but does not actually start it yet. |