summaryrefslogtreecommitdiffstats
path: root/net/core/dev_api.c
diff options
context:
space:
mode:
authorStanislav Fomichev <sdf@fomichev.me>2025-03-05 08:37:29 -0800
committerJakub Kicinski <kuba@kernel.org>2025-03-06 12:59:45 -0800
commitdf43d8bf10316a7c3b1e47e3cc0057a54df4a5b8 (patch)
treed31253686f41f2bdad50762ea5b86bf56cc7ad25 /net/core/dev_api.c
parent2bcf4772e45adb00649a4e9cbff14b08a144f9e3 (diff)
downloadlinux-stable-df43d8bf10316a7c3b1e47e3cc0057a54df4a5b8.tar.gz
linux-stable-df43d8bf10316a7c3b1e47e3cc0057a54df4a5b8.tar.bz2
linux-stable-df43d8bf10316a7c3b1e47e3cc0057a54df4a5b8.zip
net: replace dev_addr_sem with netdev instance lock
Lockdep reports possible circular dependency in [0]. Instead of fixing the ordering, replace global dev_addr_sem with netdev instance lock. Most of the paths that set/get mac are RTNL protected. Two places where it's not, convert to explicit locking: - sysfs address_show - dev_get_mac_address via dev_ioctl 0: https://netdev-3.bots.linux.dev/vmksft-forwarding-dbg/results/993321/24-router-bridge-1d-lag-sh/stderr Signed-off-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20250305163732.2766420-12-sdf@fomichev.me Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/dev_api.c')
-rw-r--r--net/core/dev_api.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/net/core/dev_api.c b/net/core/dev_api.c
index 98db990ce21c..655a95fb7baa 100644
--- a/net/core/dev_api.c
+++ b/net/core/dev_api.c
@@ -82,19 +82,6 @@ void dev_set_group(struct net_device *dev, int new_group)
netdev_unlock_ops(dev);
}
-int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
- struct netlink_ext_ack *extack)
-{
- int ret;
-
- netdev_lock_ops(dev);
- ret = netif_set_mac_address_user(dev, sa, extack);
- netdev_unlock_ops(dev);
-
- return ret;
-}
-EXPORT_SYMBOL(dev_set_mac_address_user);
-
/**
* dev_change_net_namespace() - move device to different nethost namespace
* @dev: device
@@ -310,9 +297,9 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
{
int ret;
- netdev_lock_ops(dev);
+ netdev_lock(dev);
ret = netif_set_mac_address(dev, sa, extack);
- netdev_unlock_ops(dev);
+ netdev_unlock(dev);
return ret;
}