[PATCH NET-PREV 06/51] net: Use unregister_netdevice_many() for both error cases in rtnl_newlink_create()
From: Kirill Tkhai
Date: Sat Mar 22 2025 - 10:39:57 EST
Signed-off-by: Kirill Tkhai <tkhai@xxxxx>
---
net/core/rtnetlink.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index a33b60d1de2d..046736091b4f 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3503,6 +3503,7 @@ static int rtnl_newlink_create(struct sk_buff *skb, struct ifinfomsg *ifm,
struct net *link_net;
struct net_device *dev, *master = NULL;
char ifname[IFNAMSIZ];
+ LIST_HEAD(list_kill);
int err;
if (!ops->alloc && !ops->setup)
@@ -3576,13 +3577,11 @@ static int rtnl_newlink_create(struct sk_buff *skb, struct ifinfomsg *ifm,
return err;
out_unregister:
if (ops->newlink) {
- LIST_HEAD(list_kill);
-
ops->dellink(dev, &list_kill);
- unregister_netdevice_many(&list_kill);
} else {
- unregister_netdevice(dev);
+ unregister_netdevice_queue(dev, &list_kill);
}
+ unregister_netdevice_many(&list_kill);
goto out;
}