diff options
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r-- | kernel/auditsc.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index d6a8de5f8fa3..1c2333155893 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -762,7 +762,7 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk, | |||
762 | struct audit_entry *e; | 762 | struct audit_entry *e; |
763 | enum audit_state state; | 763 | enum audit_state state; |
764 | 764 | ||
765 | if (audit_pid && tsk->tgid == audit_pid) | 765 | if (auditd_test_task(tsk)) |
766 | return AUDIT_DISABLED; | 766 | return AUDIT_DISABLED; |
767 | 767 | ||
768 | rcu_read_lock(); | 768 | rcu_read_lock(); |
@@ -816,7 +816,7 @@ void audit_filter_inodes(struct task_struct *tsk, struct audit_context *ctx) | |||
816 | { | 816 | { |
817 | struct audit_names *n; | 817 | struct audit_names *n; |
818 | 818 | ||
819 | if (audit_pid && tsk->tgid == audit_pid) | 819 | if (auditd_test_task(tsk)) |
820 | return; | 820 | return; |
821 | 821 | ||
822 | rcu_read_lock(); | 822 | rcu_read_lock(); |
@@ -2249,26 +2249,27 @@ void __audit_ptrace(struct task_struct *t) | |||
2249 | * If the audit subsystem is being terminated, record the task (pid) | 2249 | * If the audit subsystem is being terminated, record the task (pid) |
2250 | * and uid that is doing that. | 2250 | * and uid that is doing that. |
2251 | */ | 2251 | */ |
2252 | int __audit_signal_info(int sig, struct task_struct *t) | 2252 | int audit_signal_info(int sig, struct task_struct *t) |
2253 | { | 2253 | { |
2254 | struct audit_aux_data_pids *axp; | 2254 | struct audit_aux_data_pids *axp; |
2255 | struct task_struct *tsk = current; | 2255 | struct task_struct *tsk = current; |
2256 | struct audit_context *ctx = tsk->audit_context; | 2256 | struct audit_context *ctx = tsk->audit_context; |
2257 | kuid_t uid = current_uid(), t_uid = task_uid(t); | 2257 | kuid_t uid = current_uid(), t_uid = task_uid(t); |
2258 | 2258 | ||
2259 | if (audit_pid && t->tgid == audit_pid) { | 2259 | if (auditd_test_task(t) && |
2260 | if (sig == SIGTERM || sig == SIGHUP || sig == SIGUSR1 || sig == SIGUSR2) { | 2260 | (sig == SIGTERM || sig == SIGHUP || |
2261 | audit_sig_pid = task_tgid_nr(tsk); | 2261 | sig == SIGUSR1 || sig == SIGUSR2)) { |
2262 | if (uid_valid(tsk->loginuid)) | 2262 | audit_sig_pid = task_tgid_nr(tsk); |
2263 | audit_sig_uid = tsk->loginuid; | 2263 | if (uid_valid(tsk->loginuid)) |
2264 | else | 2264 | audit_sig_uid = tsk->loginuid; |
2265 | audit_sig_uid = uid; | 2265 | else |
2266 | security_task_getsecid(tsk, &audit_sig_sid); | 2266 | audit_sig_uid = uid; |
2267 | } | 2267 | security_task_getsecid(tsk, &audit_sig_sid); |
2268 | if (!audit_signals || audit_dummy_context()) | ||
2269 | return 0; | ||
2270 | } | 2268 | } |
2271 | 2269 | ||
2270 | if (!audit_signals || audit_dummy_context()) | ||
2271 | return 0; | ||
2272 | |||
2272 | /* optimize the common case by putting first signal recipient directly | 2273 | /* optimize the common case by putting first signal recipient directly |
2273 | * in audit_context */ | 2274 | * in audit_context */ |
2274 | if (!ctx->target_pid) { | 2275 | if (!ctx->target_pid) { |