aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wright <chrisw@osdl.org>2005-05-03 09:01:15 -0400
committerDavid Woodhouse <dwmw2@shinybook.infradead.org>2005-05-03 09:01:15 -0400
commit0dd8e06bdaa0a97e706ee1a489a1f6176c4ddc64 (patch)
treef09181360e5b68d46ea2856c9fa63eaa3515080c
parent27b030d58c8e72fc7a95187a791bd9406e350f02 (diff)
[PATCH] add new audit data to last skb
When adding more formatted audit data to an skb for delivery to userspace, the kernel will attempt to reuse an skb that has spare room. However, if the audit message has already been fragmented to multiple skb's, the search for spare room in the skb uses the head of the list. This will corrupt the audit message with trailing bytes being placed midway through the stream. Fix is to look at the end of the list. Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
-rw-r--r--kernel/audit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/audit.c b/kernel/audit.c
index 4a697c73faec..00455a9cf027 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -486,7 +486,7 @@ static void audit_log_move(struct audit_buffer *ab)
486 if (ab->len == 0) 486 if (ab->len == 0)
487 return; 487 return;
488 488
489 skb = skb_peek(&ab->sklist); 489 skb = skb_peek_tail(&ab->sklist);
490 if (!skb || skb_tailroom(skb) <= ab->len + extra) { 490 if (!skb || skb_tailroom(skb) <= ab->len + extra) {
491 skb = alloc_skb(2 * ab->len + extra, GFP_ATOMIC); 491 skb = alloc_skb(2 * ab->len + extra, GFP_ATOMIC);
492 if (!skb) { 492 if (!skb) {