Commit e3b926b4 authored by David Woodhouse's avatar David Woodhouse

AUDIT: pass size argument to audit_expand().

Let audit_expand() know how much it's expected to grow the buffer, in 
the case that we have that information to hand.
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent 8c5aa40c
...@@ -687,10 +687,10 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx) ...@@ -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 * Returns 0 (no space) on failed expansion, or available space if
* successful. * 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; 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); GFP_ATOMIC);
if (ret < 0) { if (ret < 0) {
audit_log_lost("out of memory in audit_expand"); 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, ...@@ -716,7 +716,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
skb = ab->skb; skb = ab->skb;
avail = skb_tailroom(skb); avail = skb_tailroom(skb);
if (avail == 0) { if (avail == 0) {
avail = audit_expand(ab); avail = audit_expand(ab, AUDIT_BUFSIZ);
if (!avail) if (!avail)
goto out; goto out;
} }
...@@ -725,7 +725,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt, ...@@ -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 /* The printk buffer is 1024 bytes long, so if we get
* here and AUDIT_BUFSIZ is at least 1024, then we can * here and AUDIT_BUFSIZ is at least 1024, then we can
* log everything that printk could have logged. */ * log everything that printk could have logged. */
avail = audit_expand(ab); avail = audit_expand(ab, 1+len-avail);
if (!avail) if (!avail)
goto out; goto out;
len = vsnprintf(skb->tail, avail, fmt, args); len = vsnprintf(skb->tail, avail, fmt, args);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment