Netlink messages must be aligned on NLMSG_ALIGNTO (4 bytes), thus we need to update the skb length before sending it to userspace.
This patch adds the needed padding to be compliant with this requirement. Signed-off-by: Nicolas Dichtel <[email protected]> --- kernel/audit.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/kernel/audit.c b/kernel/audit.c index 21c7fa6..31d213a 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -1669,6 +1669,17 @@ void audit_log_end(struct audit_buffer *ab) struct nlmsghdr *nlh = nlmsg_hdr(ab->skb); nlh->nlmsg_len = ab->skb->len - NLMSG_HDRLEN; + if (NLMSG_ALIGN(ab->skb->len) != ab->skb->len) { + unsigned int pad = NLMSG_ALIGN(ab->skb->len) - + ab->skb->len; + + if (skb_tailroom(ab->skb) >= pad) + skb_put(ab->skb, pad); + else if (pskb_expand_head(ab->skb, 0, pad, + GFP_KERNEL) < 0) + audit_log_lost("out of memory in audit_log_end"); + } + if (audit_pid) { skb_queue_tail(&audit_skb_queue, ab->skb); wake_up_interruptible(&kauditd_wait); -- 1.8.2.1 -- Linux-audit mailing list [email protected] https://www.redhat.com/mailman/listinfo/linux-audit
