summaryrefslogtreecommitdiffstats
path: root/drivers/net/macsec.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2016-05-27 11:16:53 -0400
committerTakashi Iwai <tiwai@suse.de>2016-05-27 11:16:53 -0400
commiteb4606e64a7d548f5d60a9583baa8104890b2c6e (patch)
tree2dc8e587fc79c207dab2fb74830963cc84dcf801 /drivers/net/macsec.c
parent86c72d1ce91d804e4fa8d90b316a89597dd220f1 (diff)
parentbf65921380cd50b87618df550398e06581f4a361 (diff)
Merge tag 'asoc-v4.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Updates for v4.7 part 2 Really sorry about this late pull request. It looks like at the time I sent my pull request for v4.7 there was some conflict or other issue which caused my script to stop merging the ASoC branches at some point after the HDMI changes. It's all specific driver updates, including: - New drivers for MAX98371 and TAS5720. - SPI support for TLV320AIC32x4. - TDM support for STI Uniperf IPs. This code should all have been in -next prior to the merge window apart from some fixes, it dropped out on the 18th.
Diffstat (limited to 'drivers/net/macsec.c')
-rw-r--r--drivers/net/macsec.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index c6385617bfb2..92eaab95ae2b 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -85,7 +85,7 @@ struct gcm_iv {
85 * @tfm: crypto struct, key storage 85 * @tfm: crypto struct, key storage
86 */ 86 */
87struct macsec_key { 87struct macsec_key {
88 u64 id; 88 u8 id[MACSEC_KEYID_LEN];
89 struct crypto_aead *tfm; 89 struct crypto_aead *tfm;
90}; 90};
91 91
@@ -1529,7 +1529,8 @@ static const struct nla_policy macsec_genl_sa_policy[NUM_MACSEC_SA_ATTR] = {
1529 [MACSEC_SA_ATTR_AN] = { .type = NLA_U8 }, 1529 [MACSEC_SA_ATTR_AN] = { .type = NLA_U8 },
1530 [MACSEC_SA_ATTR_ACTIVE] = { .type = NLA_U8 }, 1530 [MACSEC_SA_ATTR_ACTIVE] = { .type = NLA_U8 },
1531 [MACSEC_SA_ATTR_PN] = { .type = NLA_U32 }, 1531 [MACSEC_SA_ATTR_PN] = { .type = NLA_U32 },
1532 [MACSEC_SA_ATTR_KEYID] = { .type = NLA_U64 }, 1532 [MACSEC_SA_ATTR_KEYID] = { .type = NLA_BINARY,
1533 .len = MACSEC_KEYID_LEN, },
1533 [MACSEC_SA_ATTR_KEY] = { .type = NLA_BINARY, 1534 [MACSEC_SA_ATTR_KEY] = { .type = NLA_BINARY,
1534 .len = MACSEC_MAX_KEY_LEN, }, 1535 .len = MACSEC_MAX_KEY_LEN, },
1535}; 1536};
@@ -1576,6 +1577,9 @@ static bool validate_add_rxsa(struct nlattr **attrs)
1576 return false; 1577 return false;
1577 } 1578 }
1578 1579
1580 if (nla_len(attrs[MACSEC_SA_ATTR_KEYID]) != MACSEC_KEYID_LEN)
1581 return false;
1582
1579 return true; 1583 return true;
1580} 1584}
1581 1585
@@ -1641,7 +1645,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
1641 if (tb_sa[MACSEC_SA_ATTR_ACTIVE]) 1645 if (tb_sa[MACSEC_SA_ATTR_ACTIVE])
1642 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); 1646 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
1643 1647
1644 rx_sa->key.id = nla_get_u64(tb_sa[MACSEC_SA_ATTR_KEYID]); 1648 nla_memcpy(rx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEY], MACSEC_KEYID_LEN);
1645 rx_sa->sc = rx_sc; 1649 rx_sa->sc = rx_sc;
1646 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa); 1650 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa);
1647 1651
@@ -1722,6 +1726,9 @@ static bool validate_add_txsa(struct nlattr **attrs)
1722 return false; 1726 return false;
1723 } 1727 }
1724 1728
1729 if (nla_len(attrs[MACSEC_SA_ATTR_KEYID]) != MACSEC_KEYID_LEN)
1730 return false;
1731
1725 return true; 1732 return true;
1726} 1733}
1727 1734
@@ -1777,7 +1784,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
1777 return -ENOMEM; 1784 return -ENOMEM;
1778 } 1785 }
1779 1786
1780 tx_sa->key.id = nla_get_u64(tb_sa[MACSEC_SA_ATTR_KEYID]); 1787 nla_memcpy(tx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEY], MACSEC_KEYID_LEN);
1781 1788
1782 spin_lock_bh(&tx_sa->lock); 1789 spin_lock_bh(&tx_sa->lock);
1783 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); 1790 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]);
@@ -2318,7 +2325,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
2318 2325
2319 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2326 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) ||
2320 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) || 2327 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) ||
2321 nla_put_u64(skb, MACSEC_SA_ATTR_KEYID, tx_sa->key.id) || 2328 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, tx_sa->key.id) ||
2322 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) { 2329 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) {
2323 nla_nest_cancel(skb, txsa_nest); 2330 nla_nest_cancel(skb, txsa_nest);
2324 nla_nest_cancel(skb, txsa_list); 2331 nla_nest_cancel(skb, txsa_list);
@@ -2419,7 +2426,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
2419 2426
2420 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2427 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) ||
2421 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) || 2428 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) ||
2422 nla_put_u64(skb, MACSEC_SA_ATTR_KEYID, rx_sa->key.id) || 2429 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, rx_sa->key.id) ||
2423 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) { 2430 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) {
2424 nla_nest_cancel(skb, rxsa_nest); 2431 nla_nest_cancel(skb, rxsa_nest);
2425 nla_nest_cancel(skb, rxsc_nest); 2432 nla_nest_cancel(skb, rxsc_nest);