libnl: nla_put_net64(): align on a 64-bit area
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Fri, 22 Apr 2016 15:31:19 +0000 (17:31 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 Apr 2016 00:13:24 +0000 (20:13 -0400)
nla_data() is now aligned on a 64-bit area.

The temporary function nla_put_be64_32bit() is removed in this patch.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netfilter/ipset/ip_set.h
include/net/netlink.h
include/uapi/linux/netfilter/ipset/ip_set.h

index f48b8a664b0f8c17951f2710f8af2ff71ad8376d..83b9a2e0d8d46a64dfe0faeda4b67ea6ce972677 100644 (file)
@@ -351,7 +351,8 @@ ip_set_put_skbinfo(struct sk_buff *skb, struct ip_set_skbinfo *skbinfo)
        return ((skbinfo->skbmark || skbinfo->skbmarkmask) &&
                nla_put_net64(skb, IPSET_ATTR_SKBMARK,
                              cpu_to_be64((u64)skbinfo->skbmark << 32 |
-                                         skbinfo->skbmarkmask))) ||
+                                         skbinfo->skbmarkmask),
+                             IPSET_ATTR_PAD)) ||
               (skbinfo->skbprio &&
                nla_put_net32(skb, IPSET_ATTR_SKBPRIO,
                              cpu_to_be32(skbinfo->skbprio))) ||
@@ -374,9 +375,11 @@ static inline bool
 ip_set_put_counter(struct sk_buff *skb, struct ip_set_counter *counter)
 {
        return nla_put_net64(skb, IPSET_ATTR_BYTES,
-                            cpu_to_be64(ip_set_get_bytes(counter))) ||
+                            cpu_to_be64(ip_set_get_bytes(counter)),
+                            IPSET_ATTR_PAD) ||
               nla_put_net64(skb, IPSET_ATTR_PACKETS,
-                            cpu_to_be64(ip_set_get_packets(counter)));
+                            cpu_to_be64(ip_set_get_packets(counter)),
+                            IPSET_ATTR_PAD);
 }
 
 static inline void
index 47d7d1356fa3155086bad54874449b84557cfd0d..066a921e7cbe752225be5ed544854304d5550d9f 100644 (file)
@@ -868,20 +868,18 @@ static inline int nla_put_be64(struct sk_buff *skb, int attrtype, __be64 value,
        return nla_put_64bit(skb, attrtype, sizeof(__be64), &value, padattr);
 }
 
-static inline int nla_put_be64_32bit(struct sk_buff *skb, int attrtype,
-                                    __be64 value)
-{
-       return nla_put(skb, attrtype, sizeof(__be64), &value);
-}
 /**
- * nla_put_net64 - Add 64-bit network byte order netlink attribute to a socket buffer
+ * nla_put_net64 - Add 64-bit network byte order nlattr to a skb and align it
  * @skb: socket buffer to add attribute to
  * @attrtype: attribute type
  * @value: numeric value
+ * @padattr: attribute type for the padding
  */
-static inline int nla_put_net64(struct sk_buff *skb, int attrtype, __be64 value)
+static inline int nla_put_net64(struct sk_buff *skb, int attrtype, __be64 value,
+                               int padattr)
 {
-       return nla_put_be64_32bit(skb, attrtype | NLA_F_NET_BYTEORDER, value);
+       return nla_put_be64(skb, attrtype | NLA_F_NET_BYTEORDER, value,
+                           padattr);
 }
 
 /**
index 63b2e34f1b60393b9593513f899d3243055c1e7e..ebb5154976decef074be170d8b15564a42f3c260 100644 (file)
@@ -118,6 +118,7 @@ enum {
        IPSET_ATTR_SKBMARK,
        IPSET_ATTR_SKBPRIO,
        IPSET_ATTR_SKBQUEUE,
+       IPSET_ATTR_PAD,
        __IPSET_ATTR_ADT_MAX,
 };
 #define IPSET_ATTR_ADT_MAX     (__IPSET_ATTR_ADT_MAX - 1)