kernel/fork.c: simplify copy_mm()
All this can happen without a single goto. Link: https://lkml.kernel.org/r/2072685.XptgVkyDqn@devpool47 Signed-off-by: Rolf Eike Beer <eb@emlix.com> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
5449162ac0
commit
a689539938
@@ -1396,7 +1396,6 @@ fail_nomem:
|
|||||||
static int copy_mm(unsigned long clone_flags, struct task_struct *tsk)
|
static int copy_mm(unsigned long clone_flags, struct task_struct *tsk)
|
||||||
{
|
{
|
||||||
struct mm_struct *mm, *oldmm;
|
struct mm_struct *mm, *oldmm;
|
||||||
int retval;
|
|
||||||
|
|
||||||
tsk->min_flt = tsk->maj_flt = 0;
|
tsk->min_flt = tsk->maj_flt = 0;
|
||||||
tsk->nvcsw = tsk->nivcsw = 0;
|
tsk->nvcsw = tsk->nivcsw = 0;
|
||||||
@@ -1423,21 +1422,15 @@ static int copy_mm(unsigned long clone_flags, struct task_struct *tsk)
|
|||||||
if (clone_flags & CLONE_VM) {
|
if (clone_flags & CLONE_VM) {
|
||||||
mmget(oldmm);
|
mmget(oldmm);
|
||||||
mm = oldmm;
|
mm = oldmm;
|
||||||
goto good_mm;
|
} else {
|
||||||
|
mm = dup_mm(tsk, current->mm);
|
||||||
|
if (!mm)
|
||||||
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = -ENOMEM;
|
|
||||||
mm = dup_mm(tsk, current->mm);
|
|
||||||
if (!mm)
|
|
||||||
goto fail_nomem;
|
|
||||||
|
|
||||||
good_mm:
|
|
||||||
tsk->mm = mm;
|
tsk->mm = mm;
|
||||||
tsk->active_mm = mm;
|
tsk->active_mm = mm;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail_nomem:
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
|
static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
|
||||||
|
|||||||
Reference in New Issue
Block a user