diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2021-01-14 18:34:50 -0800 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-14 18:34:50 -0800 |
| commit | 1d9f03c0a15fa01aa14fb295cbc1236403fceb0b (patch) | |
| tree | 2161a4e17f383a14e1e235e2deed7142733aca9b /net/core/rtnetlink.c | |
| parent | e4abfd88c78105069eef627e04ef9413746bab7b (diff) | |
| parent | 146620506274bd24d52fb1c589110a30eed8240b (diff) | |
| download | linux-1d9f03c0a15fa01aa14fb295cbc1236403fceb0b.tar.gz linux-1d9f03c0a15fa01aa14fb295cbc1236403fceb0b.tar.bz2 linux-1d9f03c0a15fa01aa14fb295cbc1236403fceb0b.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/rtnetlink.c')
| -rw-r--r-- | net/core/rtnetlink.c | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index bb0596c41b3e..3d6ab194d0f5 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -3439,26 +3439,15 @@ replay: dev->ifindex = ifm->ifi_index; - if (ops->newlink) { + if (ops->newlink) err = ops->newlink(link_net ? : net, dev, tb, data, extack); - /* Drivers should call free_netdev() in ->destructor - * and unregister it on failure after registration - * so that device could be finally freed in rtnl_unlock. - */ - if (err < 0) { - /* If device is not registered at all, free it now */ - if (dev->reg_state == NETREG_UNINITIALIZED || - dev->reg_state == NETREG_UNREGISTERED) - free_netdev(dev); - goto out; - } - } else { + else err = register_netdevice(dev); - if (err < 0) { - free_netdev(dev); - goto out; - } + if (err < 0) { + free_netdev(dev); + goto out; } + err = rtnl_configure_link(dev, ifm); if (err < 0) goto out_unregister; |
