From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleg Nesterov Subject: [PATCH v2 1/1] audit_alloc: clear TIF_SYSCALL_AUDIT if !audit_context Date: Sun, 15 Sep 2013 19:11:09 +0200 Message-ID: <20130915171109.GA15418@redhat.com> References: <20130915171038.GA15410@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20130915171038.GA15410@redhat.com> Sender: linux-kernel-owner@vger.kernel.org To: Andrew Morton Cc: Eric Paris , Kees Cook , Richard Guy Briggs , Steve Grubb , Zach Levis , linux-audit@redhat.com, linux-kernel@vger.kernel.org List-Id: linux-audit@redhat.com If audit_filter_task() nacks the new thread it makes sense to clear TIF_SYSCALL_AUDIT which can be copied from parent by dup_task_struct(). A wrong TIF_SYSCALL_AUDIT is not really bad but it triggers the "slow" audit paths in entry.S to ensure the task can not miss audit_syscall_*() calls, this is pointless if the task has no ->audit_context. Signed-off-by: Oleg Nesterov Acked-by: Steve Grubb --- kernel/auditsc.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/kernel/auditsc.c b/kernel/auditsc.c index 9845cb3..95293ab 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c @@ -943,8 +943,10 @@ int audit_alloc(struct task_struct *tsk) return 0; /* Return if not auditing. */ state = audit_filter_task(tsk, &key); - if (state == AUDIT_DISABLED) + if (state == AUDIT_DISABLED) { + clear_tsk_thread_flag(tsk, TIF_SYSCALL_AUDIT); return 0; + } if (!(context = audit_alloc_context(state))) { kfree(key); -- 1.5.5.1