• David Woodhouse's avatar
    AUDIT: Stop waiting for backlog after audit_panic() happens · ac4cec44
    David Woodhouse authored
    
    
    We force a rate-limit on auditable events by making them wait for space 
    on the backlog queue. However, if auditd really is AWOL then this could 
    potentially bring the entire system to a halt, depending on the audit 
    rules in effect.
    
    Firstly, make sure the wait time is honoured correctly -- it's the 
    maximum time the process should wait, rather than the time to wait 
    _each_ time round the loop. We were getting re-woken _each_ time a 
    packet was dequeued, and the timeout was being restarted each time.
    
    Secondly, reset the wait time after audit_panic() is called. In general 
    this will be reset to zero, to allow progress to be made. If the system
    is configured to _actually_ panic on audit_panic() then that will 
    already have happened; otherwise we know that audit records are being 
    lost anyway. 
    
    These two tunables can't be exposed via AUDIT_GET and AUDIT_SET because 
    those aren't particularly well-designed. It probably should have been 
    done by sysctls or sysfs anyway -- one for a later patch.
    Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
    ac4cec44
audit.c 24.7 KB