From: Kuniyuki Iwashima Date: Wed, 15 Jan 2025 09:55:43 +0000 (+0900) Subject: dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name(). X-Git-Tag: block-6.14-20240131~28^2~41^2~2 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=e361560a7912958ba3059f51e7dd21612d119169;p=linux-block.git dev: Acquire netdev_rename_lock before restoring dev->name in dev_change_name(). The cited commit forgot to add netdev_rename_lock in one of the error paths in dev_change_name(). Let's hold netdev_rename_lock before restoring the old dev->name. Fixes: 0840556e5a3a ("net: Protect dev->name by seqlock.") Signed-off-by: Kuniyuki Iwashima Reviewed-by: Eric Dumazet Link: https://patch.msgid.link/20250115095545.52709-2-kuniyu@amazon.com Signed-off-by: Jakub Kicinski --- diff --git a/net/core/dev.c b/net/core/dev.c index 782ae3ff3f8d..cb6da0cac211 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1389,7 +1389,9 @@ int dev_change_name(struct net_device *dev, const char *newname) rollback: ret = device_rename(&dev->dev, dev->name); if (ret) { + write_seqlock_bh(&netdev_rename_lock); memcpy(dev->name, oldname, IFNAMSIZ); + write_sequnlock_bh(&netdev_rename_lock); WRITE_ONCE(dev->name_assign_type, old_assign_type); up_write(&devnet_rename_sem); return ret;