diff options
Diffstat (limited to 'kernel/audit.c')
-rw-r--r-- | kernel/audit.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index bbc6f542c8f7..41581413529c 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -613,6 +613,18 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, int type) | |||
613 | if (!audit_initialized) | 613 | if (!audit_initialized) |
614 | return NULL; | 614 | return NULL; |
615 | 615 | ||
616 | if (audit_backlog_limit | ||
617 | && skb_queue_len(&audit_skb_queue) > audit_backlog_limit) { | ||
618 | if (audit_rate_check()) | ||
619 | printk(KERN_WARNING | ||
620 | "audit: audit_backlog=%d > " | ||
621 | "audit_backlog_limit=%d\n", | ||
622 | skb_queue_len(&audit_skb_queue), | ||
623 | audit_backlog_limit); | ||
624 | audit_log_lost("backlog limit exceeded"); | ||
625 | return NULL; | ||
626 | } | ||
627 | |||
616 | ab = audit_buffer_alloc(ctx, GFP_ATOMIC, type); | 628 | ab = audit_buffer_alloc(ctx, GFP_ATOMIC, type); |
617 | if (!ab) { | 629 | if (!ab) { |
618 | audit_log_lost("out of memory in audit_log_start"); | 630 | audit_log_lost("out of memory in audit_log_start"); |