Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libnl: nla_put_msecs(): align on a 64-bit area

nla_data() is now aligned on a 64-bit area.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Nicolas Dichtel and committed by
David S. Miller
2175d87c 756a2f59

+27 -16
+7 -4
include/net/netlink.h
··· 106 106 * padattr) add s64 attribute to skb 107 107 * nla_put_string(skb, type, str) add string attribute to skb 108 108 * nla_put_flag(skb, type) add flag attribute to skb 109 - * nla_put_msecs(skb, type, jiffies) add msecs attribute to skb 109 + * nla_put_msecs(skb, type, jiffies, 110 + * padattr) add msecs attribute to skb 110 111 * nla_put_in_addr(skb, type, addr) add IPv4 address attribute to skb 111 112 * nla_put_in6_addr(skb, type, addr) add IPv6 address attribute to skb 112 113 * ··· 966 965 } 967 966 968 967 /** 969 - * nla_put_msecs - Add a msecs netlink attribute to a socket buffer 968 + * nla_put_msecs - Add a msecs netlink attribute to a skb and align it 970 969 * @skb: socket buffer to add attribute to 971 970 * @attrtype: attribute type 972 971 * @njiffies: number of jiffies to convert to msecs 972 + * @padattr: attribute type for the padding 973 973 */ 974 974 static inline int nla_put_msecs(struct sk_buff *skb, int attrtype, 975 - unsigned long njiffies) 975 + unsigned long njiffies, int padattr) 976 976 { 977 977 u64 tmp = jiffies_to_msecs(njiffies); 978 - return nla_put(skb, attrtype, sizeof(u64), &tmp); 978 + 979 + return nla_put_64bit(skb, attrtype, sizeof(u64), &tmp, padattr); 979 980 } 980 981 981 982 /**
+1
include/uapi/linux/l2tp.h
··· 126 126 L2TP_ATTR_IP6_DADDR, /* struct in6_addr */ 127 127 L2TP_ATTR_UDP_ZERO_CSUM6_TX, /* u8 */ 128 128 L2TP_ATTR_UDP_ZERO_CSUM6_RX, /* u8 */ 129 + L2TP_ATTR_PAD, 129 130 __L2TP_ATTR_MAX, 130 131 }; 131 132
+2
include/uapi/linux/neighbour.h
··· 128 128 NDTPA_LOCKTIME, /* u64, msecs */ 129 129 NDTPA_QUEUE_LENBYTES, /* u32 */ 130 130 NDTPA_MCAST_REPROBES, /* u32 */ 131 + NDTPA_PAD, 131 132 __NDTPA_MAX 132 133 }; 133 134 #define NDTPA_MAX (__NDTPA_MAX - 1) ··· 161 160 NDTA_PARMS, /* nested TLV NDTPA_* */ 162 161 NDTA_STATS, /* struct ndt_stats, read-only */ 163 162 NDTA_GC_INTERVAL, /* u64, msecs */ 163 + NDTA_PAD, 164 164 __NDTA_MAX 165 165 }; 166 166 #define NDTA_MAX (__NDTA_MAX - 1)
+1
include/uapi/linux/tcp_metrics.h
··· 40 40 TCP_METRICS_ATTR_FOPEN_COOKIE, /* binary */ 41 41 TCP_METRICS_ATTR_SADDR_IPV4, /* u32 */ 42 42 TCP_METRICS_ATTR_SADDR_IPV6, /* binary */ 43 + TCP_METRICS_ATTR_PAD, 43 44 44 45 __TCP_METRICS_ATTR_MAX, 45 46 };
+10 -9
net/core/neighbour.c
··· 1763 1763 NEIGH_VAR(parms, MCAST_PROBES)) || 1764 1764 nla_put_u32(skb, NDTPA_MCAST_REPROBES, 1765 1765 NEIGH_VAR(parms, MCAST_REPROBES)) || 1766 - nla_put_msecs(skb, NDTPA_REACHABLE_TIME, parms->reachable_time) || 1766 + nla_put_msecs(skb, NDTPA_REACHABLE_TIME, parms->reachable_time, 1767 + NDTPA_PAD) || 1767 1768 nla_put_msecs(skb, NDTPA_BASE_REACHABLE_TIME, 1768 - NEIGH_VAR(parms, BASE_REACHABLE_TIME)) || 1769 + NEIGH_VAR(parms, BASE_REACHABLE_TIME), NDTPA_PAD) || 1769 1770 nla_put_msecs(skb, NDTPA_GC_STALETIME, 1770 - NEIGH_VAR(parms, GC_STALETIME)) || 1771 + NEIGH_VAR(parms, GC_STALETIME), NDTPA_PAD) || 1771 1772 nla_put_msecs(skb, NDTPA_DELAY_PROBE_TIME, 1772 - NEIGH_VAR(parms, DELAY_PROBE_TIME)) || 1773 + NEIGH_VAR(parms, DELAY_PROBE_TIME), NDTPA_PAD) || 1773 1774 nla_put_msecs(skb, NDTPA_RETRANS_TIME, 1774 - NEIGH_VAR(parms, RETRANS_TIME)) || 1775 + NEIGH_VAR(parms, RETRANS_TIME), NDTPA_PAD) || 1775 1776 nla_put_msecs(skb, NDTPA_ANYCAST_DELAY, 1776 - NEIGH_VAR(parms, ANYCAST_DELAY)) || 1777 + NEIGH_VAR(parms, ANYCAST_DELAY), NDTPA_PAD) || 1777 1778 nla_put_msecs(skb, NDTPA_PROXY_DELAY, 1778 - NEIGH_VAR(parms, PROXY_DELAY)) || 1779 + NEIGH_VAR(parms, PROXY_DELAY), NDTPA_PAD) || 1779 1780 nla_put_msecs(skb, NDTPA_LOCKTIME, 1780 - NEIGH_VAR(parms, LOCKTIME))) 1781 + NEIGH_VAR(parms, LOCKTIME), NDTPA_PAD)) 1781 1782 goto nla_put_failure; 1782 1783 return nla_nest_end(skb, nest); 1783 1784 ··· 1805 1804 ndtmsg->ndtm_pad2 = 0; 1806 1805 1807 1806 if (nla_put_string(skb, NDTA_NAME, tbl->id) || 1808 - nla_put_msecs(skb, NDTA_GC_INTERVAL, tbl->gc_interval) || 1807 + nla_put_msecs(skb, NDTA_GC_INTERVAL, tbl->gc_interval, NDTA_PAD) || 1809 1808 nla_put_u32(skb, NDTA_THRESH1, tbl->gc_thresh1) || 1810 1809 nla_put_u32(skb, NDTA_THRESH2, tbl->gc_thresh2) || 1811 1810 nla_put_u32(skb, NDTA_THRESH3, tbl->gc_thresh3))
+4 -2
net/ipv4/tcp_metrics.c
··· 800 800 } 801 801 802 802 if (nla_put_msecs(msg, TCP_METRICS_ATTR_AGE, 803 - jiffies - tm->tcpm_stamp) < 0) 803 + jiffies - tm->tcpm_stamp, 804 + TCP_METRICS_ATTR_PAD) < 0) 804 805 goto nla_put_failure; 805 806 if (tm->tcpm_ts_stamp) { 806 807 if (nla_put_s32(msg, TCP_METRICS_ATTR_TW_TS_STAMP, ··· 865 864 (nla_put_u16(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROPS, 866 865 tfom->syn_loss) < 0 || 867 866 nla_put_msecs(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS, 868 - jiffies - tfom->last_syn_loss) < 0)) 867 + jiffies - tfom->last_syn_loss, 868 + TCP_METRICS_ATTR_PAD) < 0)) 869 869 goto nla_put_failure; 870 870 if (tfom->cookie.len > 0 && 871 871 nla_put(msg, TCP_METRICS_ATTR_FOPEN_COOKIE,
+2 -1
net/l2tp/l2tp_netlink.c
··· 746 746 nla_put_u8(skb, L2TP_ATTR_USING_IPSEC, 1)) || 747 747 #endif 748 748 (session->reorder_timeout && 749 - nla_put_msecs(skb, L2TP_ATTR_RECV_TIMEOUT, session->reorder_timeout))) 749 + nla_put_msecs(skb, L2TP_ATTR_RECV_TIMEOUT, 750 + session->reorder_timeout, L2TP_ATTR_PAD))) 750 751 goto nla_put_failure; 751 752 752 753 nest = nla_nest_start(skb, L2TP_ATTR_STATS);