From d85b3c837c50146a8a478145946ff4b0ecaeeeb8 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 29 Mar 2006 20:30:19 -0500 Subject: [PATCH] --- yaml --- r: 26445 b: refs/heads/master c: fa84cb935d4ec601528f5e2f0d5d31e7876a5044 h: refs/heads/master i: 26443: 9019d8f4fff7ad0abd5b6bcdae1b19ab32489782 v: v3 --- [refs] | 2 +- trunk/kernel/auditsc.c | 9 +-------- trunk/kernel/exit.c | 3 +++ trunk/kernel/fork.c | 2 -- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 9afbe01973b0..559fdba55706 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6fe3945b42d09a1eca7ad180a1646e585b8594f +refs/heads/master: fa84cb935d4ec601528f5e2f0d5d31e7876a5044 diff --git a/trunk/kernel/auditsc.c b/trunk/kernel/auditsc.c index 4052f0aec1d3..8ec52ffad633 100644 --- a/trunk/kernel/auditsc.c +++ b/trunk/kernel/auditsc.c @@ -698,19 +698,12 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts * audit_free - free a per-task audit context * @tsk: task whose audit context block to free * - * Called from copy_process and __put_task_struct. + * Called from copy_process and do_exit */ void audit_free(struct task_struct *tsk) { struct audit_context *context; - /* - * No need to lock the task - when we execute audit_free() - * then the task has no external references anymore, and - * we are tearing it down. (The locking also confuses - * DEBUG_LOCKDEP - this freeing may occur in softirq - * contexts as well, via RCU.) - */ context = audit_get_context(tsk, 0, 0); if (likely(!context)) return; diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index f86434d7b3d1..e95b93282210 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -35,6 +35,7 @@ #include #include #include +#include /* for audit_free() */ #include #include @@ -910,6 +911,8 @@ fastcall NORET_TYPE void do_exit(long code) if (unlikely(tsk->compat_robust_list)) compat_exit_robust_list(tsk); #endif + if (unlikely(tsk->audit_context)) + audit_free(tsk); exit_mm(tsk); exit_sem(tsk); diff --git a/trunk/kernel/fork.c b/trunk/kernel/fork.c index d2fa57d480d4..ac8100e3088a 100644 --- a/trunk/kernel/fork.c +++ b/trunk/kernel/fork.c @@ -114,8 +114,6 @@ void __put_task_struct(struct task_struct *tsk) WARN_ON(atomic_read(&tsk->usage)); WARN_ON(tsk == current); - if (unlikely(tsk->audit_context)) - audit_free(tsk); security_task_free(tsk); free_uid(tsk->user); put_group_info(tsk->group_info);