diff options
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 1a9787ac6173..e95b93282210 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/futex.h> | 35 | #include <linux/futex.h> |
36 | #include <linux/compat.h> | 36 | #include <linux/compat.h> |
37 | #include <linux/pipe_fs_i.h> | 37 | #include <linux/pipe_fs_i.h> |
38 | #include <linux/audit.h> /* for audit_free() */ | ||
38 | 39 | ||
39 | #include <asm/uaccess.h> | 40 | #include <asm/uaccess.h> |
40 | #include <asm/unistd.h> | 41 | #include <asm/unistd.h> |
@@ -56,7 +57,7 @@ static void __unhash_process(struct task_struct *p) | |||
56 | detach_pid(p, PIDTYPE_PGID); | 57 | detach_pid(p, PIDTYPE_PGID); |
57 | detach_pid(p, PIDTYPE_SID); | 58 | detach_pid(p, PIDTYPE_SID); |
58 | 59 | ||
59 | list_del_init(&p->tasks); | 60 | list_del_rcu(&p->tasks); |
60 | __get_cpu_var(process_counts)--; | 61 | __get_cpu_var(process_counts)--; |
61 | } | 62 | } |
62 | list_del_rcu(&p->thread_group); | 63 | list_del_rcu(&p->thread_group); |
@@ -910,6 +911,8 @@ fastcall NORET_TYPE void do_exit(long code) | |||
910 | if (unlikely(tsk->compat_robust_list)) | 911 | if (unlikely(tsk->compat_robust_list)) |
911 | compat_exit_robust_list(tsk); | 912 | compat_exit_robust_list(tsk); |
912 | #endif | 913 | #endif |
914 | if (unlikely(tsk->audit_context)) | ||
915 | audit_free(tsk); | ||
913 | exit_mm(tsk); | 916 | exit_mm(tsk); |
914 | 917 | ||
915 | exit_sem(tsk); | 918 | exit_sem(tsk); |