- If dup_mmap fails we will try to destroy_context before
init_new_context occurs. Platforms with non-trivial
init_new_context can explode because of this. The fix
is to invoke init_new_context before dup_mmap.
if (!mm_init(mm))
goto fail_nomem;
+ if (init_new_context(tsk,mm))
+ goto free_pt;
+
down_write(&oldmm->mmap_sem);
retval = dup_mmap(mm);
up_write(&oldmm->mmap_sem);
if (retval)
goto free_pt;
- if (init_new_context(tsk,mm))
- goto free_pt;
-
good_mm:
tsk->mm = mm;
tsk->active_mm = mm;