[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <174265439526.356712.16198592761679126897.stgit@pro.pro>
Date: Sat, 22 Mar 2025 17:39:55 +0300
From: Kirill Tkhai <tkhai@...ru>
To: netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: tkhai@...ru
Subject: [PATCH NET-PREV 16/51] geneve: Use __register_netdevice in .newlink
The objective is to conform .newlink with its callers,
which already assign nd_lock (and matches master nd_lock
if there is one).
Signed-off-by: Kirill Tkhai <tkhai@...ru>
---
drivers/net/geneve.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index 838e85ddec67..f74f92753063 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -1380,7 +1380,7 @@ static int geneve_configure(struct net *net, struct net_device *dev,
dev->flags = IFF_POINTOPOINT | IFF_NOARP;
}
- err = register_netdevice(dev);
+ err = __register_netdevice(dev);
if (err)
return err;
@@ -1830,6 +1830,7 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
u8 name_assign_type, u16 dst_port)
{
struct nlattr *tb[IFLA_MAX + 1];
+ struct nd_lock *nd_lock;
struct net_device *dev;
LIST_HEAD(list_kill);
int err;
@@ -1846,12 +1847,21 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
if (IS_ERR(dev))
return dev;
+ if (!attach_new_nd_lock(dev)) {
+ free_netdev(dev);
+ return ERR_PTR(-ENOMEM);
+ }
+
init_tnl_info(&cfg.info, dst_port);
+ lock_netdev(dev, &nd_lock);
err = geneve_configure(net, dev, NULL, &cfg);
if (err) {
+ detach_nd_lock(dev);
+ unlock_netdev(nd_lock);
free_netdev(dev);
return ERR_PTR(err);
}
+ unlock_netdev(nd_lock);
/* openvswitch users expect packet sizes to be unrestricted,
* so set the largest MTU we can.
Powered by blists - more mailing lists