[PATCH] simplify audit_free() locking

Simplify audit_free()'s locking: no need to lock a task that we are tearing
down.  [the extra locking also caused false positives in the lock
validator]

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Ingo Molnar 2006-03-07 23:51:39 -08:00 committed by Al Viro
parent d9d9ec6e2c
commit 4023e02080
1 changed files with 7 additions and 3 deletions

View File

@ -704,10 +704,14 @@ void audit_free(struct task_struct *tsk)
{ {
struct audit_context *context; struct audit_context *context;
task_lock(tsk); /*
* 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); context = audit_get_context(tsk, 0, 0);
task_unlock(tsk);
if (likely(!context)) if (likely(!context))
return; return;