]> git.hungrycats.org Git - linux/commitdiff
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:27:22 +0000 (02:27 +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 1e67abd946aa20f7722f874350e20f287eeb189d..add0544a571a9c37594552fe7fffce97d31c1b92 100644 (file)
@@ -107,7 +107,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:
@@ -117,6 +116,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;
 }