diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-03-29 20:26:24 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2006-05-01 06:06:21 -0400 |
commit | 97e94c453073a2aba4bb5e0825ddc5e923debf11 (patch) | |
tree | 9ed466c5252608302389f59d00c1e9e3eecd7303 /kernel/auditsc.c | |
parent | 5411be59db80333039386f3b1ccfe5eb9023a916 (diff) |
[PATCH] no need to wank with task_lock() and pinning task down in audit_syscall_exit()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r-- | kernel/auditsc.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index 7ed82b088e4b..8aca4ab4aa27 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -329,7 +329,6 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk, | |||
329 | return AUDIT_BUILD_CONTEXT; | 329 | return AUDIT_BUILD_CONTEXT; |
330 | } | 330 | } |
331 | 331 | ||
332 | /* This should be called with task_lock() held. */ | ||
333 | static inline struct audit_context *audit_get_context(struct task_struct *tsk, | 332 | static inline struct audit_context *audit_get_context(struct task_struct *tsk, |
334 | int return_valid, | 333 | int return_valid, |
335 | int return_code) | 334 | int return_code) |
@@ -823,15 +822,10 @@ void audit_syscall_exit(int valid, long return_code) | |||
823 | struct task_struct *tsk = current; | 822 | struct task_struct *tsk = current; |
824 | struct audit_context *context; | 823 | struct audit_context *context; |
825 | 824 | ||
826 | get_task_struct(tsk); | ||
827 | task_lock(tsk); | ||
828 | context = audit_get_context(tsk, valid, return_code); | 825 | context = audit_get_context(tsk, valid, return_code); |
829 | task_unlock(tsk); | ||
830 | 826 | ||
831 | /* Not having a context here is ok, since the parent may have | ||
832 | * called __put_task_struct. */ | ||
833 | if (likely(!context)) | 827 | if (likely(!context)) |
834 | goto out; | 828 | return; |
835 | 829 | ||
836 | if (context->in_syscall && context->auditable) | 830 | if (context->in_syscall && context->auditable) |
837 | audit_log_exit(context, tsk); | 831 | audit_log_exit(context, tsk); |
@@ -849,8 +843,6 @@ void audit_syscall_exit(int valid, long return_code) | |||
849 | audit_free_aux(context); | 843 | audit_free_aux(context); |
850 | tsk->audit_context = context; | 844 | tsk->audit_context = context; |
851 | } | 845 | } |
852 | out: | ||
853 | put_task_struct(tsk); | ||
854 | } | 846 | } |
855 | 847 | ||
856 | /** | 848 | /** |