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

macsec: use nla_put_u64_64bit()

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
f60d94c0 fab7b629

+95 -33
+88 -33
drivers/net/macsec.c
··· 1405 1405 return (__force sci_t)nla_get_u64(nla); 1406 1406 } 1407 1407 1408 - static int nla_put_sci(struct sk_buff *skb, int attrtype, sci_t value) 1408 + static int nla_put_sci(struct sk_buff *skb, int attrtype, sci_t value, 1409 + int padattr) 1409 1410 { 1410 - return nla_put_u64(skb, attrtype, (__force u64)value); 1411 + return nla_put_u64_64bit(skb, attrtype, (__force u64)value, padattr); 1411 1412 } 1412 1413 1413 1414 static struct macsec_tx_sa *get_txsa_from_nl(struct net *net, ··· 2132 2131 sum.InPktsUnusedSA += tmp.InPktsUnusedSA; 2133 2132 } 2134 2133 2135 - if (nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED, sum.InOctetsValidated) || 2136 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED, sum.InOctetsDecrypted) || 2137 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED, sum.InPktsUnchecked) || 2138 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED, sum.InPktsDelayed) || 2139 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK, sum.InPktsOK) || 2140 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID, sum.InPktsInvalid) || 2141 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE, sum.InPktsLate) || 2142 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID, sum.InPktsNotValid) || 2143 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA, sum.InPktsNotUsingSA) || 2144 - nla_put_u64(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA, sum.InPktsUnusedSA)) 2134 + if (nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED, 2135 + sum.InOctetsValidated, 2136 + MACSEC_RXSC_STATS_ATTR_PAD) || 2137 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED, 2138 + sum.InOctetsDecrypted, 2139 + MACSEC_RXSC_STATS_ATTR_PAD) || 2140 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED, 2141 + sum.InPktsUnchecked, 2142 + MACSEC_RXSC_STATS_ATTR_PAD) || 2143 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED, 2144 + sum.InPktsDelayed, 2145 + MACSEC_RXSC_STATS_ATTR_PAD) || 2146 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK, 2147 + sum.InPktsOK, 2148 + MACSEC_RXSC_STATS_ATTR_PAD) || 2149 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID, 2150 + sum.InPktsInvalid, 2151 + MACSEC_RXSC_STATS_ATTR_PAD) || 2152 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE, 2153 + sum.InPktsLate, 2154 + MACSEC_RXSC_STATS_ATTR_PAD) || 2155 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID, 2156 + sum.InPktsNotValid, 2157 + MACSEC_RXSC_STATS_ATTR_PAD) || 2158 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA, 2159 + sum.InPktsNotUsingSA, 2160 + MACSEC_RXSC_STATS_ATTR_PAD) || 2161 + nla_put_u64_64bit(skb, MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA, 2162 + sum.InPktsUnusedSA, 2163 + MACSEC_RXSC_STATS_ATTR_PAD)) 2145 2164 return -EMSGSIZE; 2146 2165 2147 2166 return 0; ··· 2190 2169 sum.OutOctetsEncrypted += tmp.OutOctetsEncrypted; 2191 2170 } 2192 2171 2193 - if (nla_put_u64(skb, MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED, sum.OutPktsProtected) || 2194 - nla_put_u64(skb, MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED, sum.OutPktsEncrypted) || 2195 - nla_put_u64(skb, MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED, sum.OutOctetsProtected) || 2196 - nla_put_u64(skb, MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED, sum.OutOctetsEncrypted)) 2172 + if (nla_put_u64_64bit(skb, MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED, 2173 + sum.OutPktsProtected, 2174 + MACSEC_TXSC_STATS_ATTR_PAD) || 2175 + nla_put_u64_64bit(skb, MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED, 2176 + sum.OutPktsEncrypted, 2177 + MACSEC_TXSC_STATS_ATTR_PAD) || 2178 + nla_put_u64_64bit(skb, MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED, 2179 + sum.OutOctetsProtected, 2180 + MACSEC_TXSC_STATS_ATTR_PAD) || 2181 + nla_put_u64_64bit(skb, MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED, 2182 + sum.OutOctetsEncrypted, 2183 + MACSEC_TXSC_STATS_ATTR_PAD)) 2197 2184 return -EMSGSIZE; 2198 2185 2199 2186 return 0; ··· 2234 2205 sum.InPktsOverrun += tmp.InPktsOverrun; 2235 2206 } 2236 2207 2237 - if (nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED, sum.OutPktsUntagged) || 2238 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED, sum.InPktsUntagged) || 2239 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG, sum.OutPktsTooLong) || 2240 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG, sum.InPktsNoTag) || 2241 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG, sum.InPktsBadTag) || 2242 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI, sum.InPktsUnknownSCI) || 2243 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI, sum.InPktsNoSCI) || 2244 - nla_put_u64(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN, sum.InPktsOverrun)) 2208 + if (nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED, 2209 + sum.OutPktsUntagged, 2210 + MACSEC_SECY_STATS_ATTR_PAD) || 2211 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED, 2212 + sum.InPktsUntagged, 2213 + MACSEC_SECY_STATS_ATTR_PAD) || 2214 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG, 2215 + sum.OutPktsTooLong, 2216 + MACSEC_SECY_STATS_ATTR_PAD) || 2217 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG, 2218 + sum.InPktsNoTag, 2219 + MACSEC_SECY_STATS_ATTR_PAD) || 2220 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG, 2221 + sum.InPktsBadTag, 2222 + MACSEC_SECY_STATS_ATTR_PAD) || 2223 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI, 2224 + sum.InPktsUnknownSCI, 2225 + MACSEC_SECY_STATS_ATTR_PAD) || 2226 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI, 2227 + sum.InPktsNoSCI, 2228 + MACSEC_SECY_STATS_ATTR_PAD) || 2229 + nla_put_u64_64bit(skb, MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN, 2230 + sum.InPktsOverrun, 2231 + MACSEC_SECY_STATS_ATTR_PAD)) 2245 2232 return -EMSGSIZE; 2246 2233 2247 2234 return 0; ··· 2271 2226 if (!secy_nest) 2272 2227 return 1; 2273 2228 2274 - if (nla_put_sci(skb, MACSEC_SECY_ATTR_SCI, secy->sci) || 2275 - nla_put_u64(skb, MACSEC_SECY_ATTR_CIPHER_SUITE, DEFAULT_CIPHER_ID) || 2229 + if (nla_put_sci(skb, MACSEC_SECY_ATTR_SCI, secy->sci, 2230 + MACSEC_SECY_ATTR_PAD) || 2231 + nla_put_u64_64bit(skb, MACSEC_SECY_ATTR_CIPHER_SUITE, 2232 + DEFAULT_CIPHER_ID, 2233 + MACSEC_SECY_ATTR_PAD) || 2276 2234 nla_put_u8(skb, MACSEC_SECY_ATTR_ICV_LEN, secy->icv_len) || 2277 2235 nla_put_u8(skb, MACSEC_SECY_ATTR_OPER, secy->operational) || 2278 2236 nla_put_u8(skb, MACSEC_SECY_ATTR_PROTECT, secy->protect_frames) || ··· 2360 2312 2361 2313 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2362 2314 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) || 2363 - nla_put_u64(skb, MACSEC_SA_ATTR_KEYID, tx_sa->key.id) || 2315 + nla_put_u64_64bit(skb, MACSEC_SA_ATTR_KEYID, 2316 + tx_sa->key.id, 2317 + MACSEC_SA_ATTR_PAD) || 2364 2318 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) { 2365 2319 nla_nest_cancel(skb, txsa_nest); 2366 2320 nla_nest_cancel(skb, txsa_list); ··· 2403 2353 } 2404 2354 2405 2355 if (nla_put_u8(skb, MACSEC_RXSC_ATTR_ACTIVE, rx_sc->active) || 2406 - nla_put_sci(skb, MACSEC_RXSC_ATTR_SCI, rx_sc->sci)) { 2356 + nla_put_sci(skb, MACSEC_RXSC_ATTR_SCI, rx_sc->sci, 2357 + MACSEC_RXSC_ATTR_PAD)) { 2407 2358 nla_nest_cancel(skb, rxsc_nest); 2408 2359 nla_nest_cancel(skb, rxsc_list); 2409 2360 goto nla_put_failure; ··· 2464 2413 2465 2414 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2466 2415 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) || 2467 - nla_put_u64(skb, MACSEC_SA_ATTR_KEYID, rx_sa->key.id) || 2416 + nla_put_u64_64bit(skb, MACSEC_SA_ATTR_KEYID, 2417 + rx_sa->key.id, 2418 + MACSEC_SA_ATTR_PAD) || 2468 2419 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) { 2469 2420 nla_nest_cancel(skb, rxsa_nest); 2470 2421 nla_nest_cancel(skb, rxsc_nest); ··· 3198 3145 static size_t macsec_get_size(const struct net_device *dev) 3199 3146 { 3200 3147 return 0 + 3201 - nla_total_size(8) + /* SCI */ 3148 + nla_total_size_64bit(8) + /* SCI */ 3202 3149 nla_total_size(1) + /* ICV_LEN */ 3203 - nla_total_size(8) + /* CIPHER_SUITE */ 3150 + nla_total_size_64bit(8) + /* CIPHER_SUITE */ 3204 3151 nla_total_size(4) + /* WINDOW */ 3205 3152 nla_total_size(1) + /* ENCODING_SA */ 3206 3153 nla_total_size(1) + /* ENCRYPT */ ··· 3219 3166 struct macsec_secy *secy = &macsec_priv(dev)->secy; 3220 3167 struct macsec_tx_sc *tx_sc = &secy->tx_sc; 3221 3168 3222 - if (nla_put_sci(skb, IFLA_MACSEC_SCI, secy->sci) || 3169 + if (nla_put_sci(skb, IFLA_MACSEC_SCI, secy->sci, 3170 + IFLA_MACSEC_PAD) || 3223 3171 nla_put_u8(skb, IFLA_MACSEC_ICV_LEN, secy->icv_len) || 3224 - nla_put_u64(skb, IFLA_MACSEC_CIPHER_SUITE, DEFAULT_CIPHER_ID) || 3172 + nla_put_u64_64bit(skb, IFLA_MACSEC_CIPHER_SUITE, 3173 + DEFAULT_CIPHER_ID, IFLA_MACSEC_PAD) || 3225 3174 nla_put_u8(skb, IFLA_MACSEC_ENCODING_SA, tx_sc->encoding_sa) || 3226 3175 nla_put_u8(skb, IFLA_MACSEC_ENCRYPT, tx_sc->encrypt) || 3227 3176 nla_put_u8(skb, IFLA_MACSEC_PROTECT, secy->protect_frames) ||
+1
include/uapi/linux/if_link.h
··· 434 434 IFLA_MACSEC_SCB, 435 435 IFLA_MACSEC_REPLAY_PROTECT, 436 436 IFLA_MACSEC_VALIDATION, 437 + IFLA_MACSEC_PAD, 437 438 __IFLA_MACSEC_MAX, 438 439 }; 439 440
+6
include/uapi/linux/if_macsec.h
··· 55 55 MACSEC_SECY_ATTR_INC_SCI, 56 56 MACSEC_SECY_ATTR_ES, 57 57 MACSEC_SECY_ATTR_SCB, 58 + MACSEC_SECY_ATTR_PAD, 58 59 __MACSEC_SECY_ATTR_END, 59 60 NUM_MACSEC_SECY_ATTR = __MACSEC_SECY_ATTR_END, 60 61 MACSEC_SECY_ATTR_MAX = __MACSEC_SECY_ATTR_END - 1, ··· 67 66 MACSEC_RXSC_ATTR_ACTIVE, /* config/dump, u8 0..1 */ 68 67 MACSEC_RXSC_ATTR_SA_LIST, /* dump, nested */ 69 68 MACSEC_RXSC_ATTR_STATS, /* dump, nested, macsec_rxsc_stats_attr */ 69 + MACSEC_RXSC_ATTR_PAD, 70 70 __MACSEC_RXSC_ATTR_END, 71 71 NUM_MACSEC_RXSC_ATTR = __MACSEC_RXSC_ATTR_END, 72 72 MACSEC_RXSC_ATTR_MAX = __MACSEC_RXSC_ATTR_END - 1, ··· 81 79 MACSEC_SA_ATTR_KEY, /* config, data */ 82 80 MACSEC_SA_ATTR_KEYID, /* config/dump, u64 */ 83 81 MACSEC_SA_ATTR_STATS, /* dump, nested, macsec_sa_stats_attr */ 82 + MACSEC_SA_ATTR_PAD, 84 83 __MACSEC_SA_ATTR_END, 85 84 NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END, 86 85 MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1, ··· 113 110 MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID, 114 111 MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA, 115 112 MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA, 113 + MACSEC_RXSC_STATS_ATTR_PAD, 116 114 __MACSEC_RXSC_STATS_ATTR_END, 117 115 NUM_MACSEC_RXSC_STATS_ATTR = __MACSEC_RXSC_STATS_ATTR_END, 118 116 MACSEC_RXSC_STATS_ATTR_MAX = __MACSEC_RXSC_STATS_ATTR_END - 1, ··· 141 137 MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED, 142 138 MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED, 143 139 MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED, 140 + MACSEC_TXSC_STATS_ATTR_PAD, 144 141 __MACSEC_TXSC_STATS_ATTR_END, 145 142 NUM_MACSEC_TXSC_STATS_ATTR = __MACSEC_TXSC_STATS_ATTR_END, 146 143 MACSEC_TXSC_STATS_ATTR_MAX = __MACSEC_TXSC_STATS_ATTR_END - 1, ··· 158 153 MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI, 159 154 MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI, 160 155 MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN, 156 + MACSEC_SECY_STATS_ATTR_PAD, 161 157 __MACSEC_SECY_STATS_ATTR_END, 162 158 NUM_MACSEC_SECY_STATS_ATTR = __MACSEC_SECY_STATS_ATTR_END, 163 159 MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,