diff options
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r-- | drivers/net/macvlan.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 9bf46bd19b87..cc9845ec91c1 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -828,22 +828,21 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev, | |||
828 | eth_hw_addr_inherit(dev, lowerdev); | 828 | eth_hw_addr_inherit(dev, lowerdev); |
829 | } | 829 | } |
830 | 830 | ||
831 | port->count += 1; | ||
832 | err = register_netdevice(dev); | ||
833 | if (err < 0) | ||
834 | goto destroy_port; | ||
835 | |||
831 | err = netdev_upper_dev_link(lowerdev, dev); | 836 | err = netdev_upper_dev_link(lowerdev, dev); |
832 | if (err) | 837 | if (err) |
833 | goto destroy_port; | 838 | goto destroy_port; |
834 | 839 | ||
835 | port->count += 1; | ||
836 | err = register_netdevice(dev); | ||
837 | if (err < 0) | ||
838 | goto upper_dev_unlink; | ||
839 | 840 | ||
840 | list_add_tail_rcu(&vlan->list, &port->vlans); | 841 | list_add_tail_rcu(&vlan->list, &port->vlans); |
841 | netif_stacked_transfer_operstate(lowerdev, dev); | 842 | netif_stacked_transfer_operstate(lowerdev, dev); |
842 | 843 | ||
843 | return 0; | 844 | return 0; |
844 | 845 | ||
845 | upper_dev_unlink: | ||
846 | netdev_upper_dev_unlink(lowerdev, dev); | ||
847 | destroy_port: | 846 | destroy_port: |
848 | port->count -= 1; | 847 | port->count -= 1; |
849 | if (!port->count) | 848 | if (!port->count) |