summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Machata <petrm@mellanox.com>2018-12-06 12:05:36 -0500
committerDavid S. Miller <davem@davemloft.net>2018-12-06 16:26:06 -0500
commit00f54e68924eaf075f3f24be18557899d347bc4a (patch)
treefa59ed2835386585396ebba68aecd4dd6350362f
parentfdb8b298676a39b660d10c6dcaaf5b702f811009 (diff)
net: core: dev: Add extack argument to dev_open()
In order to pass extack together with NETDEV_PRE_UP notifications, it's necessary to route the extack to __dev_open() from diverse (possibly indirect) callers. One prominent API through which the notification is invoked is dev_open(). Therefore extend dev_open() with and extra extack argument and update all users. Most of the calls end up just encoding NULL, but bond and team drivers have the extack readily available. Signed-off-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/bonding/bond_main.c2
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c2
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_ethtool.c2
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_ethtool.c2
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c2
-rw-r--r--drivers/net/ethernet/sfc/ethtool.c2
-rw-r--r--drivers/net/ethernet/sfc/falcon/ethtool.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_main.c2
-rw-r--r--drivers/net/hyperv/netvsc_drv.c4
-rw-r--r--drivers/net/net_failover.c8
-rw-r--r--drivers/net/team/team.c2
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_main.c2
-rw-r--r--drivers/s390/net/qeth_l2_main.c2
-rw-r--r--drivers/s390/net/qeth_l3_main.c2
-rw-r--r--drivers/staging/fsl-dpaa2/ethsw/ethsw.c2
-rw-r--r--drivers/staging/unisys/visornic/visornic_main.c2
-rw-r--r--include/linux/netdevice.h2
-rw-r--r--net/bluetooth/6lowpan.c2
-rw-r--r--net/core/dev.c5
-rw-r--r--net/core/netpoll.c2
-rw-r--r--net/ipv4/ipmr.c4
-rw-r--r--net/ipv6/addrconf.c2
-rw-r--r--net/ipv6/ip6mr.c2
23 files changed, 30 insertions, 29 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 333387f1f1fe..6b34dbefa7dd 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1538,7 +1538,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
1538 slave_dev->flags |= IFF_SLAVE; 1538 slave_dev->flags |= IFF_SLAVE;
1539 1539
1540 /* open the slave since the application closed it */ 1540 /* open the slave since the application closed it */
1541 res = dev_open(slave_dev); 1541 res = dev_open(slave_dev, extack);
1542 if (res) { 1542 if (res) {
1543 netdev_dbg(bond_dev, "Opening slave %s failed\n", slave_dev->name); 1543 netdev_dbg(bond_dev, "Opening slave %s failed\n", slave_dev->name);
1544 goto err_restore_mac; 1544 goto err_restore_mac;
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
index a5fd71692c8b..43b42615ad84 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
@@ -525,7 +525,7 @@ static int aq_set_ringparam(struct net_device *ndev,
525 } 525 }
526 } 526 }
527 if (ndev_running) 527 if (ndev_running)
528 err = dev_open(ndev); 528 err = dev_open(ndev, NULL);
529 529
530err_exit: 530err_exit:
531 return err; 531 return err;
diff --git a/drivers/net/ethernet/cisco/enic/enic_ethtool.c b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
index f42f7a6e1559..ebd5c2cf1efe 100644
--- a/drivers/net/ethernet/cisco/enic/enic_ethtool.c
+++ b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
@@ -241,7 +241,7 @@ static int enic_set_ringparam(struct net_device *netdev,
241 } 241 }
242 enic_init_vnic_resources(enic); 242 enic_init_vnic_resources(enic);
243 if (running) { 243 if (running) {
244 err = dev_open(netdev); 244 err = dev_open(netdev, NULL);
245 if (err) 245 if (err)
246 goto err_out; 246 goto err_out;
247 } 247 }
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index 774beda040a1..8e9b95871d30 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -624,7 +624,7 @@ static void hns_nic_self_test(struct net_device *ndev,
624 clear_bit(NIC_STATE_TESTING, &priv->state); 624 clear_bit(NIC_STATE_TESTING, &priv->state);
625 625
626 if (if_running) 626 if (if_running)
627 (void)dev_open(ndev); 627 (void)dev_open(ndev, NULL);
628 } 628 }
629 /* Online tests aren't run; pass by default */ 629 /* Online tests aren't run; pass by default */
630 630
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 4563638367ac..e678b6939da3 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -821,7 +821,7 @@ static int hns3_set_ringparam(struct net_device *ndev,
821 } 821 }
822 822
823 if (if_running) 823 if (if_running)
824 ret = dev_open(ndev); 824 ret = dev_open(ndev, NULL);
825 825
826 return ret; 826 return ret;
827} 827}
diff --git a/drivers/net/ethernet/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c
index 3143588ffd77..600d7b895cf2 100644
--- a/drivers/net/ethernet/sfc/ethtool.c
+++ b/drivers/net/ethernet/sfc/ethtool.c
@@ -539,7 +539,7 @@ static void efx_ethtool_self_test(struct net_device *net_dev,
539 /* We need rx buffers and interrupts. */ 539 /* We need rx buffers and interrupts. */
540 already_up = (efx->net_dev->flags & IFF_UP); 540 already_up = (efx->net_dev->flags & IFF_UP);
541 if (!already_up) { 541 if (!already_up) {
542 rc = dev_open(efx->net_dev); 542 rc = dev_open(efx->net_dev, NULL);
543 if (rc) { 543 if (rc) {
544 netif_err(efx, drv, efx->net_dev, 544 netif_err(efx, drv, efx->net_dev,
545 "failed opening device.\n"); 545 "failed opening device.\n");
diff --git a/drivers/net/ethernet/sfc/falcon/ethtool.c b/drivers/net/ethernet/sfc/falcon/ethtool.c
index 1ccdb7a82e2a..72cedec945c1 100644
--- a/drivers/net/ethernet/sfc/falcon/ethtool.c
+++ b/drivers/net/ethernet/sfc/falcon/ethtool.c
@@ -517,7 +517,7 @@ static void ef4_ethtool_self_test(struct net_device *net_dev,
517 /* We need rx buffers and interrupts. */ 517 /* We need rx buffers and interrupts. */
518 already_up = (efx->net_dev->flags & IFF_UP); 518 already_up = (efx->net_dev->flags & IFF_UP);
519 if (!already_up) { 519 if (!already_up) {
520 rc = dev_open(efx->net_dev); 520 rc = dev_open(efx->net_dev, NULL);
521 if (rc) { 521 if (rc) {
522 netif_err(efx, drv, efx->net_dev, 522 netif_err(efx, drv, efx->net_dev,
523 "failed opening device.\n"); 523 "failed opening device.\n");
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index c728ed1375b2..d20496f0ebd0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -4082,7 +4082,7 @@ static void stmmac_reset_subtask(struct stmmac_priv *priv)
4082 4082
4083 set_bit(STMMAC_DOWN, &priv->state); 4083 set_bit(STMMAC_DOWN, &priv->state);
4084 dev_close(priv->dev); 4084 dev_close(priv->dev);
4085 dev_open(priv->dev); 4085 dev_open(priv->dev, NULL);
4086 clear_bit(STMMAC_DOWN, &priv->state); 4086 clear_bit(STMMAC_DOWN, &priv->state);
4087 clear_bit(STMMAC_RESETING, &priv->state); 4087 clear_bit(STMMAC_RESETING, &priv->state);
4088 rtnl_unlock(); 4088 rtnl_unlock();
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 85936ed9e952..c65620adab52 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -137,7 +137,7 @@ static int netvsc_open(struct net_device *net)
137 * slave as up. If open fails, then slave will be 137 * slave as up. If open fails, then slave will be
138 * still be offline (and not used). 138 * still be offline (and not used).
139 */ 139 */
140 ret = dev_open(vf_netdev); 140 ret = dev_open(vf_netdev, NULL);
141 if (ret) 141 if (ret)
142 netdev_warn(net, 142 netdev_warn(net,
143 "unable to open slave: %s: %d\n", 143 "unable to open slave: %s: %d\n",
@@ -2002,7 +2002,7 @@ static void __netvsc_vf_setup(struct net_device *ndev,
2002 netif_addr_unlock_bh(ndev); 2002 netif_addr_unlock_bh(ndev);
2003 2003
2004 if (netif_running(ndev)) { 2004 if (netif_running(ndev)) {
2005 ret = dev_open(vf_netdev); 2005 ret = dev_open(vf_netdev, NULL);
2006 if (ret) 2006 if (ret)
2007 netdev_warn(vf_netdev, 2007 netdev_warn(vf_netdev,
2008 "unable to open: %d\n", ret); 2008 "unable to open: %d\n", ret);
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index e964d312f4ca..ed1166adaa2f 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -40,14 +40,14 @@ static int net_failover_open(struct net_device *dev)
40 40
41 primary_dev = rtnl_dereference(nfo_info->primary_dev); 41 primary_dev = rtnl_dereference(nfo_info->primary_dev);
42 if (primary_dev) { 42 if (primary_dev) {
43 err = dev_open(primary_dev); 43 err = dev_open(primary_dev, NULL);
44 if (err) 44 if (err)
45 goto err_primary_open; 45 goto err_primary_open;
46 } 46 }
47 47
48 standby_dev = rtnl_dereference(nfo_info->standby_dev); 48 standby_dev = rtnl_dereference(nfo_info->standby_dev);
49 if (standby_dev) { 49 if (standby_dev) {
50 err = dev_open(standby_dev); 50 err = dev_open(standby_dev, NULL);
51 if (err) 51 if (err)
52 goto err_standby_open; 52 goto err_standby_open;
53 } 53 }
@@ -517,7 +517,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,
517 dev_hold(slave_dev); 517 dev_hold(slave_dev);
518 518
519 if (netif_running(failover_dev)) { 519 if (netif_running(failover_dev)) {
520 err = dev_open(slave_dev); 520 err = dev_open(slave_dev, NULL);
521 if (err && (err != -EBUSY)) { 521 if (err && (err != -EBUSY)) {
522 netdev_err(failover_dev, "Opening slave %s failed err:%d\n", 522 netdev_err(failover_dev, "Opening slave %s failed err:%d\n",
523 slave_dev->name, err); 523 slave_dev->name, err);
@@ -680,7 +680,7 @@ static int net_failover_slave_name_change(struct net_device *slave_dev,
680 /* We need to bring up the slave after the rename by udev in case 680 /* We need to bring up the slave after the rename by udev in case
681 * open failed with EBUSY when it was registered. 681 * open failed with EBUSY when it was registered.
682 */ 682 */
683 dev_open(slave_dev); 683 dev_open(slave_dev, NULL);
684 684
685 return 0; 685 return 0;
686} 686}
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 364f514d56d8..93576e0240dd 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1212,7 +1212,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
1212 goto err_port_enter; 1212 goto err_port_enter;
1213 } 1213 }
1214 1214
1215 err = dev_open(port_dev); 1215 err = dev_open(port_dev, extack);
1216 if (err) { 1216 if (err) {
1217 netdev_dbg(dev, "Device %s opening failed\n", 1217 netdev_dbg(dev, "Device %s opening failed\n",
1218 portname); 1218 portname);
diff --git a/drivers/net/wireless/intersil/hostap/hostap_main.c b/drivers/net/wireless/intersil/hostap/hostap_main.c
index 012930d35434..b0e7c0a0617e 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_main.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_main.c
@@ -690,7 +690,7 @@ static int prism2_open(struct net_device *dev)
690 /* Master radio interface is needed for all operation, so open 690 /* Master radio interface is needed for all operation, so open
691 * it automatically when any virtual net_device is opened. */ 691 * it automatically when any virtual net_device is opened. */
692 local->master_dev_auto_open = 1; 692 local->master_dev_auto_open = 1;
693 dev_open(local->dev); 693 dev_open(local->dev, NULL);
694 } 694 }
695 695
696 netif_device_attach(dev); 696 netif_device_attach(dev);
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index 2836231c1c5d..f108d4b44605 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -1007,7 +1007,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
1007 qeth_l2_set_rx_mode(card->dev); 1007 qeth_l2_set_rx_mode(card->dev);
1008 } else { 1008 } else {
1009 rtnl_lock(); 1009 rtnl_lock();
1010 dev_open(card->dev); 1010 dev_open(card->dev, NULL);
1011 rtnl_unlock(); 1011 rtnl_unlock();
1012 } 1012 }
1013 } 1013 }
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index eca68da39d05..42a7cdc59b76 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -2417,7 +2417,7 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
2417 __qeth_l3_open(card->dev); 2417 __qeth_l3_open(card->dev);
2418 qeth_l3_set_rx_mode(card->dev); 2418 qeth_l3_set_rx_mode(card->dev);
2419 } else { 2419 } else {
2420 dev_open(card->dev); 2420 dev_open(card->dev, NULL);
2421 } 2421 }
2422 rtnl_unlock(); 2422 rtnl_unlock();
2423 } 2423 }
diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
index 4fa37d6e598b..daabaceeea52 100644
--- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
+++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
@@ -1172,7 +1172,7 @@ static int ethsw_open(struct ethsw_core *ethsw)
1172 1172
1173 for (i = 0; i < ethsw->sw_attr.num_ifs; i++) { 1173 for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
1174 port_priv = ethsw->ports[i]; 1174 port_priv = ethsw->ports[i];
1175 err = dev_open(port_priv->netdev); 1175 err = dev_open(port_priv->netdev, NULL);
1176 if (err) { 1176 if (err) {
1177 netdev_err(port_priv->netdev, "dev_open err %d\n", err); 1177 netdev_err(port_priv->netdev, "dev_open err %d\n", err);
1178 return err; 1178 return err;
diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c
index 3647b8f1ed28..5eeb4b93b45b 100644
--- a/drivers/staging/unisys/visornic/visornic_main.c
+++ b/drivers/staging/unisys/visornic/visornic_main.c
@@ -2095,7 +2095,7 @@ static int visornic_resume(struct visor_device *dev,
2095 mod_timer(&devdata->irq_poll_timer, msecs_to_jiffies(2)); 2095 mod_timer(&devdata->irq_poll_timer, msecs_to_jiffies(2));
2096 2096
2097 rtnl_lock(); 2097 rtnl_lock();
2098 dev_open(netdev); 2098 dev_open(netdev, NULL);
2099 rtnl_unlock(); 2099 rtnl_unlock();
2100 2100
2101 complete_func(dev, 0); 2101 complete_func(dev, 0);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 94fb2e12f117..d79be3055f5f 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2605,7 +2605,7 @@ struct net_device *dev_get_by_name(struct net *net, const char *name);
2605struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); 2605struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
2606struct net_device *__dev_get_by_name(struct net *net, const char *name); 2606struct net_device *__dev_get_by_name(struct net *net, const char *name);
2607int dev_alloc_name(struct net_device *dev, const char *name); 2607int dev_alloc_name(struct net_device *dev, const char *name);
2608int dev_open(struct net_device *dev); 2608int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);
2609void dev_close(struct net_device *dev); 2609void dev_close(struct net_device *dev);
2610void dev_close_many(struct list_head *head, bool unlink); 2610void dev_close_many(struct list_head *head, bool unlink);
2611void dev_disable_lro(struct net_device *dev); 2611void dev_disable_lro(struct net_device *dev);
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index 828e87fe8027..9d79c7de234a 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -607,7 +607,7 @@ static void ifup(struct net_device *netdev)
607 int err; 607 int err;
608 608
609 rtnl_lock(); 609 rtnl_lock();
610 err = dev_open(netdev); 610 err = dev_open(netdev, NULL);
611 if (err < 0) 611 if (err < 0)
612 BT_INFO("iface %s cannot be opened (%d)", netdev->name, err); 612 BT_INFO("iface %s cannot be opened (%d)", netdev->name, err);
613 rtnl_unlock(); 613 rtnl_unlock();
diff --git a/net/core/dev.c b/net/core/dev.c
index 04a6b7100aac..b801c1aafd70 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1406,7 +1406,8 @@ static int __dev_open(struct net_device *dev)
1406 1406
1407/** 1407/**
1408 * dev_open - prepare an interface for use. 1408 * dev_open - prepare an interface for use.
1409 * @dev: device to open 1409 * @dev: device to open
1410 * @extack: netlink extended ack
1410 * 1411 *
1411 * Takes a device from down to up state. The device's private open 1412 * Takes a device from down to up state. The device's private open
1412 * function is invoked and then the multicast lists are loaded. Finally 1413 * function is invoked and then the multicast lists are loaded. Finally
@@ -1416,7 +1417,7 @@ static int __dev_open(struct net_device *dev)
1416 * Calling this function on an active interface is a nop. On a failure 1417 * Calling this function on an active interface is a nop. On a failure
1417 * a negative errno code is returned. 1418 * a negative errno code is returned.
1418 */ 1419 */
1419int dev_open(struct net_device *dev) 1420int dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
1420{ 1421{
1421 int ret; 1422 int ret;
1422 1423
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 2b9fdbc43205..36a2b63ffd6d 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -663,7 +663,7 @@ int netpoll_setup(struct netpoll *np)
663 663
664 np_info(np, "device %s not up yet, forcing it\n", np->dev_name); 664 np_info(np, "device %s not up yet, forcing it\n", np->dev_name);
665 665
666 err = dev_open(ndev); 666 err = dev_open(ndev, NULL);
667 667
668 if (err) { 668 if (err) {
669 np_err(np, "failed to open %s\n", ndev->name); 669 np_err(np, "failed to open %s\n", ndev->name);
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 5cbc749a50aa..ea04e38f56e9 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -506,7 +506,7 @@ static struct net_device *ipmr_new_tunnel(struct net *net, struct vifctl *v)
506 dev->flags |= IFF_MULTICAST; 506 dev->flags |= IFF_MULTICAST;
507 if (!ipmr_init_vif_indev(dev)) 507 if (!ipmr_init_vif_indev(dev))
508 goto failure; 508 goto failure;
509 if (dev_open(dev)) 509 if (dev_open(dev, NULL))
510 goto failure; 510 goto failure;
511 dev_hold(dev); 511 dev_hold(dev);
512 } 512 }
@@ -589,7 +589,7 @@ static struct net_device *ipmr_reg_vif(struct net *net, struct mr_table *mrt)
589 589
590 if (!ipmr_init_vif_indev(dev)) 590 if (!ipmr_init_vif_indev(dev))
591 goto failure; 591 goto failure;
592 if (dev_open(dev)) 592 if (dev_open(dev, NULL))
593 goto failure; 593 goto failure;
594 594
595 dev_hold(dev); 595 dev_hold(dev);
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 045597b9a7c0..521e471f1cf9 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2820,7 +2820,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
2820 dev = __dev_get_by_name(net, p.name); 2820 dev = __dev_get_by_name(net, p.name);
2821 if (!dev) 2821 if (!dev)
2822 goto err_exit; 2822 goto err_exit;
2823 err = dev_open(dev); 2823 err = dev_open(dev, NULL);
2824 } 2824 }
2825 } 2825 }
2826#endif 2826#endif
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index e2ea691e42c6..8c63494400c4 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -655,7 +655,7 @@ static struct net_device *ip6mr_reg_vif(struct net *net, struct mr_table *mrt)
655 return NULL; 655 return NULL;
656 } 656 }
657 657
658 if (dev_open(dev)) 658 if (dev_open(dev, NULL))
659 goto failure; 659 goto failure;
660 660
661 dev_hold(dev); 661 dev_hold(dev);