diff options
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 56d85fd81411..dd5a371c392a 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1681,9 +1681,12 @@ static __latent_entropy struct task_struct *copy_process( | |||
1681 | goto bad_fork_cleanup_perf; | 1681 | goto bad_fork_cleanup_perf; |
1682 | /* copy all the process information */ | 1682 | /* copy all the process information */ |
1683 | shm_init_task(p); | 1683 | shm_init_task(p); |
1684 | retval = copy_semundo(clone_flags, p); | 1684 | retval = security_task_alloc(p, clone_flags); |
1685 | if (retval) | 1685 | if (retval) |
1686 | goto bad_fork_cleanup_audit; | 1686 | goto bad_fork_cleanup_audit; |
1687 | retval = copy_semundo(clone_flags, p); | ||
1688 | if (retval) | ||
1689 | goto bad_fork_cleanup_security; | ||
1687 | retval = copy_files(clone_flags, p); | 1690 | retval = copy_files(clone_flags, p); |
1688 | if (retval) | 1691 | if (retval) |
1689 | goto bad_fork_cleanup_semundo; | 1692 | goto bad_fork_cleanup_semundo; |
@@ -1907,6 +1910,8 @@ bad_fork_cleanup_files: | |||
1907 | exit_files(p); /* blocking */ | 1910 | exit_files(p); /* blocking */ |
1908 | bad_fork_cleanup_semundo: | 1911 | bad_fork_cleanup_semundo: |
1909 | exit_sem(p); | 1912 | exit_sem(p); |
1913 | bad_fork_cleanup_security: | ||
1914 | security_task_free(p); | ||
1910 | bad_fork_cleanup_audit: | 1915 | bad_fork_cleanup_audit: |
1911 | audit_free(p); | 1916 | audit_free(p); |
1912 | bad_fork_cleanup_perf: | 1917 | bad_fork_cleanup_perf: |