diff --git a/kernel/audit.c b/kernel/audit.c index c5e034fe14bbb67e1d7ffd43071f21a4a2e806b0..3de5ebb94559216d43908ac0cc5a0c3c7cfb9a01 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -740,6 +740,8 @@ static int kauditd_send_queue(struct sock *sk, u32 portid, if (!sk) { if (err_hook) (*err_hook)(skb); + if (queue == &audit_hold_queue) + goto out; continue; } @@ -756,6 +758,8 @@ static int kauditd_send_queue(struct sock *sk, u32 portid, (*err_hook)(skb); if (rc == -EAGAIN) rc = 0; + if (queue == &audit_hold_queue) + goto out; /* continue to drain the queue */ continue; } else @@ -767,6 +771,7 @@ static int kauditd_send_queue(struct sock *sk, u32 portid, } } +out: return (rc >= 0 ? 0 : rc); }