[net-next,v3,06/15] net: devlink: don't take devlink_mutex for devlink_compat_*
diff mbox series

Message ID 20190324101438.6376-7-jiri@resnulli.us
State Accepted
Delegated to: David Miller
Headers show
Series
  • devlink: small spring cleanup
Related show

Commit Message

Jiri Pirko March 24, 2019, 10:14 a.m. UTC
From: Jiri Pirko <jiri@mellanox.com>

The netdevice is guaranteed to not disappear so we can rely that
devlink_port and devlink won't disappear as well. No need to take
devlink_mutex so don't take it here.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
 net/core/devlink.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

Patch
diff mbox series

diff --git a/net/core/devlink.c b/net/core/devlink.c
index 1fe772eb18af..b40fd1addf14 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -6449,17 +6449,15 @@  void devlink_compat_running_version(struct net_device *dev,
 	dev_hold(dev);
 	rtnl_unlock();
 
-	mutex_lock(&devlink_mutex);
 	devlink = netdev_to_devlink(dev);
 	if (!devlink || !devlink->ops->info_get)
-		goto unlock_list;
+		goto out;
 
 	mutex_lock(&devlink->lock);
 	__devlink_compat_running_version(devlink, buf, len);
 	mutex_unlock(&devlink->lock);
-unlock_list:
-	mutex_unlock(&devlink_mutex);
 
+out:
 	rtnl_lock();
 	dev_put(dev);
 }
@@ -6467,22 +6465,22 @@  void devlink_compat_running_version(struct net_device *dev,
 int devlink_compat_flash_update(struct net_device *dev, const char *file_name)
 {
 	struct devlink *devlink;
-	int ret = -EOPNOTSUPP;
+	int ret;
 
 	dev_hold(dev);
 	rtnl_unlock();
 
-	mutex_lock(&devlink_mutex);
 	devlink = netdev_to_devlink(dev);
-	if (!devlink || !devlink->ops->flash_update)
-		goto unlock_list;
+	if (!devlink || !devlink->ops->flash_update) {
+		ret = -EOPNOTSUPP;
+		goto out;
+	}
 
 	mutex_lock(&devlink->lock);
 	ret = devlink->ops->flash_update(devlink, file_name, NULL, NULL);
 	mutex_unlock(&devlink->lock);
-unlock_list:
-	mutex_unlock(&devlink_mutex);
 
+out:
 	rtnl_lock();
 	dev_put(dev);