summaryrefslogtreecommitdiff
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorKuniyuki Iwashima <kuniyu@amazon.com>2025-01-15 18:55:45 +0900
committerJakub Kicinski <kuba@kernel.org>2025-01-16 17:20:50 -0800
commitbe94cfdb993ff091ce3b98a16b45795198957f95 (patch)
treefb21e89872604ac996af35b011eb1aaa7ee882f9 /net/core/dev.c
parent2f1bb1e2cc0068b6f5fe992ed3108d89b9b29cf9 (diff)
dev: Hold rtnl_net_lock() for dev_ifsioc().
Basically, dev_ifsioc() operates on the passed single netns (except for netdev notifier chains with lower/upper devices for which we will need more changes). Let's hold rtnl_net_lock() for dev_ifsioc(). Now that NETDEV_CHANGENAME is always triggered under rtnl_net_lock() of the device's netns. (do_setlink() and dev_ifsioc()) Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20250115095545.52709-4-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 32fcf54b779d..fe5f5855593d 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1348,16 +1348,13 @@ static int dev_get_valid_name(struct net *net, struct net_device *dev,
*/
int dev_change_name(struct net_device *dev, const char *newname)
{
+ struct net *net = dev_net(dev);
unsigned char old_assign_type;
char oldname[IFNAMSIZ];
int err = 0;
int ret;
- struct net *net;
-
- ASSERT_RTNL();
- BUG_ON(!dev_net(dev));
- net = dev_net(dev);
+ ASSERT_RTNL_NET(net);
if (!strncmp(newname, dev->name, IFNAMSIZ))
return 0;