ipmr: align RTA_MFC_STATS on 64-bit
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Thu, 21 Apr 2016 16:58:26 +0000 (18:58 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Apr 2016 18:22:13 +0000 (14:22 -0400)
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/rtnetlink.h
net/ipv4/ipmr.c

index cc885c4e9065a932a561cfff20beb48fb7944a1d..a94e0b69c7696fceed97484d119eae5ac7f965e9 100644 (file)
@@ -317,6 +317,7 @@ enum rtattr_type_t {
        RTA_ENCAP_TYPE,
        RTA_ENCAP,
        RTA_EXPIRES,
+       RTA_PAD,
        __RTA_MAX
 };
 
index 395e2814a46d9995b63b6bc703e28433ecc26c2b..21a38e296fe2da2c4a095c94ab204362d9eacc89 100644 (file)
@@ -2104,7 +2104,7 @@ static int __ipmr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb,
        mfcs.mfcs_packets = c->mfc_un.res.pkt;
        mfcs.mfcs_bytes = c->mfc_un.res.bytes;
        mfcs.mfcs_wrong_if = c->mfc_un.res.wrong_if;
-       if (nla_put(skb, RTA_MFC_STATS, sizeof(mfcs), &mfcs) < 0)
+       if (nla_put_64bit(skb, RTA_MFC_STATS, sizeof(mfcs), &mfcs, RTA_PAD) < 0)
                return -EMSGSIZE;
 
        rtm->rtm_type = RTN_MULTICAST;
@@ -2237,7 +2237,7 @@ static size_t mroute_msgsize(bool unresolved, int maxvif)
                      + nla_total_size(0)       /* RTA_MULTIPATH */
                      + maxvif * NLA_ALIGN(sizeof(struct rtnexthop))
                                                /* RTA_MFC_STATS */
-                     + nla_total_size(sizeof(struct rta_mfc_stats))
+                     + nla_total_size_64bit(sizeof(struct rta_mfc_stats))
                ;
 
        return len;