audit: rework audit_log_start()
authorPaul Moore <paul@paul-moore.com>
Tue, 29 Nov 2016 21:53:25 +0000 (16:53 -0500)
committerPaul Moore <paul@paul-moore.com>
Wed, 14 Dec 2016 18:06:04 +0000 (13:06 -0500)
commit3197542482df22c2a131d4a813280bd7c54cedf5
tree1ac88d16cb2a38ea387a71a63f3b5457f70e74fd
parentc6480207fdf7b61de216ee23e93eac0a6878fa74
audit: rework audit_log_start()

The backlog queue handling in audit_log_start() is a little odd with
some questionable design decisions, this patch attempts to rectify
this with the following changes:

* Never make auditd wait, ignore any backlog limits as we need auditd
awake so it can drain the backlog queue.

* When we hit a backlog limit and start dropping records, don't wake
all the tasks sleeping on the backlog, that's silly.  Instead, let
kauditd_thread() take care of waking everyone once it has had a chance
to drain the backlog queue.

* Don't keep a global backlog timeout countdown, make it per-task.  A
per-task timer means we won't have all the sleeping tasks waking at
the same time and hammering on an already stressed backlog queue.

Signed-off-by: Paul Moore <paul@paul-moore.com>
kernel/audit.c