Commit 97e94c45 authored by Al Viro's avatar Al Viro

[PATCH] no need to wank with task_lock() and pinning task down in audit_syscall_exit()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 5411be59
...@@ -329,7 +329,6 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk, ...@@ -329,7 +329,6 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk,
return AUDIT_BUILD_CONTEXT; return AUDIT_BUILD_CONTEXT;
} }
/* This should be called with task_lock() held. */
static inline struct audit_context *audit_get_context(struct task_struct *tsk, static inline struct audit_context *audit_get_context(struct task_struct *tsk,
int return_valid, int return_valid,
int return_code) int return_code)
...@@ -823,15 +822,10 @@ void audit_syscall_exit(int valid, long return_code) ...@@ -823,15 +822,10 @@ void audit_syscall_exit(int valid, long return_code)
struct task_struct *tsk = current; struct task_struct *tsk = current;
struct audit_context *context; struct audit_context *context;
get_task_struct(tsk);
task_lock(tsk);
context = audit_get_context(tsk, valid, return_code); 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)) if (likely(!context))
goto out; return;
if (context->in_syscall && context->auditable) if (context->in_syscall && context->auditable)
audit_log_exit(context, tsk); audit_log_exit(context, tsk);
...@@ -849,8 +843,6 @@ void audit_syscall_exit(int valid, long return_code) ...@@ -849,8 +843,6 @@ void audit_syscall_exit(int valid, long return_code)
audit_free_aux(context); audit_free_aux(context);
tsk->audit_context = context; tsk->audit_context = context;
} }
out:
put_task_struct(tsk);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment