diff options
-rw-r--r-- | kernel/audit.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index 6d7175c1e878..10c4930c2bbf 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -1353,17 +1353,19 @@ void audit_log_end(struct audit_buffer *ab) | |||
1353 | if (!audit_rate_check()) { | 1353 | if (!audit_rate_check()) { |
1354 | audit_log_lost("rate limit exceeded"); | 1354 | audit_log_lost("rate limit exceeded"); |
1355 | } else { | 1355 | } else { |
1356 | struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); | ||
1356 | if (audit_pid) { | 1357 | if (audit_pid) { |
1357 | struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); | ||
1358 | nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0); | 1358 | nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0); |
1359 | skb_queue_tail(&audit_skb_queue, ab->skb); | 1359 | skb_queue_tail(&audit_skb_queue, ab->skb); |
1360 | ab->skb = NULL; | 1360 | ab->skb = NULL; |
1361 | wake_up_interruptible(&kauditd_wait); | 1361 | wake_up_interruptible(&kauditd_wait); |
1362 | } else if (printk_ratelimit()) { | 1362 | } else if (nlh->nlmsg_type != AUDIT_EOE) { |
1363 | struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); | 1363 | if (printk_ratelimit()) { |
1364 | printk(KERN_NOTICE "type=%d %s\n", nlh->nlmsg_type, ab->skb->data + NLMSG_SPACE(0)); | 1364 | printk(KERN_NOTICE "type=%d %s\n", |
1365 | } else { | 1365 | nlh->nlmsg_type, |
1366 | audit_log_lost("printk limit exceeded\n"); | 1366 | ab->skb->data + NLMSG_SPACE(0)); |
1367 | } else | ||
1368 | audit_log_lost("printk limit exceeded\n"); | ||
1367 | } | 1369 | } |
1368 | } | 1370 | } |
1369 | audit_buffer_free(ab); | 1371 | audit_buffer_free(ab); |