AUDIT: Fix abuse of va_args. 

We're not allowed to use args twice; we need to use va_copy.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
diff --git a/kernel/audit.c b/kernel/audit.c
index 1dd456c..ddb69a4 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -708,6 +708,7 @@
 {
 	int len, avail;
 	struct sk_buff *skb;
+	va_list args2;
 
 	if (!ab)
 		return;
@@ -720,6 +721,7 @@
 		if (!avail)
 			goto out;
 	}
+	va_copy(args2, args);
 	len = vsnprintf(skb->tail, avail, fmt, args);
 	if (len >= avail) {
 		/* The printk buffer is 1024 bytes long, so if we get
@@ -728,7 +730,7 @@
 		avail = audit_expand(ab, 1+len-avail);
 		if (!avail)
 			goto out;
-		len = vsnprintf(skb->tail, avail, fmt, args);
+		len = vsnprintf(skb->tail, avail, fmt, args2);
 	}
 	skb_put(skb, (len < avail) ? len : avail);
 out: