fix oops in __audit_signal_info()
PATCH 1/1 fix oops in __audit_signal_info()
Check for audit_signals is misplaced and check foraudit_dummy_context() is missing; as the result, if we send signal to auditd from task with NULL ->audit_context while we have audit_signals != 0 we end up with an oops.
Signed-off-by Al Viro <[email protected]>
---
kernel/auditsc.c +11 -11
@@ -1992,19 +1992,19 @@ int __audit_signal_info(int sig, struct task_struct *t)extern uid_t audit_sig_uid;extern u32 audit_sig_sid; -if (audit_pid && t->tgid == audit_pid && - (sig ==SIGTERM || sig ==SIGHUP || sig ==SIGUSR1 )) { - audit_sig_pid = tsk->pid; -if (ctx) - audit_sig_uid = ctx->loginuid; -else - audit_sig_uid = tsk->uid; -selinux_get_task_sid (tsk, &audit_sig_sid); +if (audit_pid && t->tgid == audit_pid) { +if (sig ==SIGTERM || sig ==SIGHUP || sig ==SIGUSR1 ) { + audit_sig_pid = tsk->pid; +if (ctx) + audit_sig_uid = ctx->loginuid; +else + audit_sig_uid = tsk->uid; +selinux_get_task_sid (tsk, &audit_sig_sid); + } +if (!audit_signals ||audit_dummy_context ()) +return 0 ; } -if (!audit_signals)/* audit_context checked in wrapper */ -return 0 ; -/* optimize the common case by putting first signal recipient directly * in audit_context */ if (!ctx->target_pid) {
Quoted 6 lines · Al Viro
Check for
audit_signalsis misplaced and check foraudit_dummy_context()is missing; as the result, if we send signal to auditd from task with NULL ->audit_context while we haveaudit_signals!= 0 we end up with an oops.Signed-off-by Al Viro <[email protected]>
Acked-by James Morris <[email protected]>
Signature · 2 lines
James Morris <[email protected]>