drop_monitor: consider inserted data in genlmsg_end
authorReiter Wolfgang <wr0112358@gmail.com>
Tue, 3 Jan 2017 00:39:10 +0000 (01:39 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 16 Mar 2017 02:18:55 +0000 (02:18 +0000)
[ Upstream commit 3b48ab2248e61408910e792fe84d6ec466084c1a ]

Final nlmsg_len field update must reflect inserted net_dm_drop_point
data.

This patch depends on previous patch:
"drop_monitor: add missing call to genlmsg_end"

Signed-off-by: Reiter Wolfgang <wr0112358@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/core/drop_monitor.c

index 4458ede..32b2fa4 100644 (file)
@@ -104,7 +104,6 @@ static struct sk_buff *reset_per_cpu_data(struct per_cpu_dm_data *data)
        }
        msg = nla_data(nla);
        memset(msg, 0, al);
-       genlmsg_end(skb, msg_header);
        goto out;
 
 err:
@@ -114,6 +113,13 @@ out:
        swap(data->skb, skb);
        spin_unlock_irqrestore(&data->lock, flags);
 
+       if (skb) {
+               struct nlmsghdr *nlh = (struct nlmsghdr *)skb->data;
+               struct genlmsghdr *gnlh = (struct genlmsghdr *)nlmsg_data(nlh);
+
+               genlmsg_end(skb, genlmsg_data(gnlh));
+       }
+
        return skb;
 }