diff --git a/kernel/audit.c b/kernel/audit.c index 2a38cbaf3ddb7862aeacf60ddaccc1a46a3f5669..21be62bc8205fa0e856aa061a74eff73c99233bd 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -732,6 +732,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; } @@ -748,6 +750,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 @@ -759,6 +763,7 @@ static int kauditd_send_queue(struct sock *sk, u32 portid, } } +out: return (rc >= 0 ? 0 : rc); }