RE: [PATCH] audit: always follow va_copy() with va_end()

From: Eric Paris
Date: Sun Jan 08 2012 - 19:54:26 EST


This one was committed to my audit tree which al promised to pull all of my audit tree into the vfs tree for 3.3, so if you want to take it Linus, you can add my ack as the maintainer. I'd expect to see it from Al early this week. Can't say anything about SCSI though...


-----Original Message-----
From: Jesper Juhl [jj@xxxxxxxxxxxxx]
Received: Sunday, 08 Jan 2012, 4:44pm
To: Linus Torvalds [torvalds@xxxxxxxxxxxxxxxxxxxx]
CC: Linux Kernel Mailing List [linux-kernel@xxxxxxxxxxxxxxx]; Andrew Morton [akpm@xxxxxxxxxxxxxxxxxxxx]; Al Viro [viro@xxxxxxxxxxxxxxxxxx]; Eric Paris [eparis@xxxxxxxxxx]
Subject: [PATCH] audit: always follow va_copy() with va_end()


A call to va_copy() should always be followed by a call to va_end() in the
same function. In kernel/autit.c::audit_log_vformat() this is not always
done. This patch makes sure va_end() is always called.

Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx>
Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Cc: Eric Paris <eparis@xxxxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---
kernel/audit.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/audit.c b/kernel/audit.c
index 09fae26..2c1d6ab 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -1260,12 +1260,13 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
avail = audit_expand(ab,
max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail));
if (!avail)
- goto out;
+ goto out_va_end;
len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args2);
}
- va_end(args2);
if (len > 0)
skb_put(skb, len);
+out_va_end:
+ va_end(args2);
out:
return;
}
--
1.7.8.1


--
Jesper Juhl <jj@xxxxxxxxxxxxx> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.