aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/audit.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/audit.c b/kernel/audit.c
index 2ddd1a2b66d..1dd456c90ae 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -687,10 +687,10 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx)
* Returns 0 (no space) on failed expansion, or available space if
* successful.
*/
-static inline int audit_expand(struct audit_buffer *ab)
+static inline int audit_expand(struct audit_buffer *ab, int extra)
{
struct sk_buff *skb = ab->skb;
- int ret = pskb_expand_head(skb, skb_headroom(skb), AUDIT_BUFSIZ,
+ int ret = pskb_expand_head(skb, skb_headroom(skb), extra,
GFP_ATOMIC);
if (ret < 0) {
audit_log_lost("out of memory in audit_expand");
@@ -716,7 +716,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
skb = ab->skb;
avail = skb_tailroom(skb);
if (avail == 0) {
- avail = audit_expand(ab);
+ avail = audit_expand(ab, AUDIT_BUFSIZ);
if (!avail)
goto out;
}
@@ -725,7 +725,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
/* The printk buffer is 1024 bytes long, so if we get
* here and AUDIT_BUFSIZ is at least 1024, then we can
* log everything that printk could have logged. */
- avail = audit_expand(ab);
+ avail = audit_expand(ab, 1+len-avail);
if (!avail)
goto out;
len = vsnprintf(skb->tail, avail, fmt, args);