aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macsec.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-10-28 23:17:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-10-28 23:17:49 -0400
commit9f51ae62c84a23ade0ba86457d30a30c9db0c50f (patch)
treed71bf5c81f17629d3d1b3131e0842c02bd9a7dd6 /drivers/net/macsec.c
parent53b3b6bbfde6aae8d1ededc86ad4e0e1e00eb5f8 (diff)
parent747569b0a7c537d680bc94a988be6caad9960488 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) GRO overflow entries are not unlinked properly, resulting in list poison pointers being dereferenced. 2) Fix bridge build with ipv6 disabled, from Nikolay Aleksandrov. 3) Direct packet access and other fixes in BPF from Daniel Borkmann. 4) gred_change_table_def() gets passed the wrong pointer, a pointer to a set of unparsed attributes instead of the attribute itself. From Jakub Kicinski. 5) Allow macsec device to be brought up even if it's lowerdev is down, from Sabrina Dubroca. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: net: diag: document swapped src/dst in udp_dump_one. macsec: let the administrator set UP state even if lowerdev is down macsec: update operstate when lower device changes net: sched: gred: pass the right attribute to gred_change_table_def() ptp: drop redundant kasprintf() to create worker name net: bridge: remove ipv6 zero address check in mcast queries net: Properly unlink GRO packets on overflow. bpf: fix wrong helper enablement in cgroup local storage bpf: add bpf_jit_limit knob to restrict unpriv allocations bpf: make direct packet write unclone more robust bpf: fix leaking uninitialized memory on pop/peek helpers bpf: fix direct packet write into pop/peek helpers bpf: fix cg_skb types to hint access type in may_access_direct_pkt_data bpf: fix direct packet access for flow dissector progs bpf: disallow direct packet access for unpriv in cg_skb bpf: fix test suite to enable all unpriv program types bpf, btf: fix a missing check bug in btf_parse selftests/bpf: add config fragments BPF_STREAM_PARSER and XDP_SOCKETS bpf: devmap: fix wrong interface selection in notifier_call
Diffstat (limited to 'drivers/net/macsec.c')
-rw-r--r--drivers/net/macsec.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 4bb90b6867a2..64a982563d59 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -2812,9 +2812,6 @@ static int macsec_dev_open(struct net_device *dev)
2812 struct net_device *real_dev = macsec->real_dev; 2812 struct net_device *real_dev = macsec->real_dev;
2813 int err; 2813 int err;
2814 2814
2815 if (!(real_dev->flags & IFF_UP))
2816 return -ENETDOWN;
2817
2818 err = dev_uc_add(real_dev, dev->dev_addr); 2815 err = dev_uc_add(real_dev, dev->dev_addr);
2819 if (err < 0) 2816 if (err < 0)
2820 return err; 2817 return err;
@@ -3306,6 +3303,9 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
3306 if (err < 0) 3303 if (err < 0)
3307 goto del_dev; 3304 goto del_dev;
3308 3305
3306 netif_stacked_transfer_operstate(real_dev, dev);
3307 linkwatch_fire_event(dev);
3308
3309 macsec_generation++; 3309 macsec_generation++;
3310 3310
3311 return 0; 3311 return 0;
@@ -3490,6 +3490,20 @@ static int macsec_notify(struct notifier_block *this, unsigned long event,
3490 return NOTIFY_DONE; 3490 return NOTIFY_DONE;
3491 3491
3492 switch (event) { 3492 switch (event) {
3493 case NETDEV_DOWN:
3494 case NETDEV_UP:
3495 case NETDEV_CHANGE: {
3496 struct macsec_dev *m, *n;
3497 struct macsec_rxh_data *rxd;
3498
3499 rxd = macsec_data_rtnl(real_dev);
3500 list_for_each_entry_safe(m, n, &rxd->secys, secys) {
3501 struct net_device *dev = m->secy.netdev;
3502
3503 netif_stacked_transfer_operstate(real_dev, dev);
3504 }
3505 break;
3506 }
3493 case NETDEV_UNREGISTER: { 3507 case NETDEV_UNREGISTER: {
3494 struct macsec_dev *m, *n; 3508 struct macsec_dev *m, *n;
3495 struct macsec_rxh_data *rxd; 3509 struct macsec_rxh_data *rxd;