Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3b926b4 authored by David Woodhouse's avatar David Woodhouse
Browse files

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
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);