From: Al Viro Signed-off-by: Al Viro Signed-off-by: Andrew Morton --- kernel/auditsc.c | 10 +--------- 1 files changed, 1 insertion(+), 9 deletions(-) diff -puN kernel/auditsc.c~audit-no-need-to-wank-with-task_lock-and-pinning-task-down-in-audit_syscall_exit kernel/auditsc.c --- devel/kernel/auditsc.c~audit-no-need-to-wank-with-task_lock-and-pinning-task-down-in-audit_syscall_exit 2006-04-17 21:40:35.000000000 -0700 +++ devel-akpm/kernel/auditsc.c 2006-04-17 21:40:35.000000000 -0700 @@ -329,7 +329,6 @@ static enum audit_state audit_filter_sys return AUDIT_BUILD_CONTEXT; } -/* This should be called with task_lock() held. */ static inline struct audit_context *audit_get_context(struct task_struct *tsk, int return_valid, int return_code) @@ -823,15 +822,10 @@ void audit_syscall_exit(int valid, long struct task_struct *tsk = current; struct audit_context *context; - get_task_struct(tsk); - task_lock(tsk); context = audit_get_context(tsk, valid, return_code); - task_unlock(tsk); - /* Not having a context here is ok, since the parent may have - * called __put_task_struct. */ if (likely(!context)) - goto out; + return; if (context->in_syscall && context->auditable) audit_log_exit(context, tsk); @@ -849,8 +843,6 @@ void audit_syscall_exit(int valid, long audit_free_aux(context); tsk->audit_context = context; } - out: - put_task_struct(tsk); } /** _