Blob Blame History Raw
From: Vlad Buslov <vladbu@mellanox.com>
Date: Mon, 12 Aug 2019 20:02:02 +0300
Subject: net: devlink: remove redundant rtnl lock assert
Patch-mainline: v5.4-rc1
Git-commit: 043b8413e8c0c0ffbf8be268eb73716e05a96064
References: bsc#1154353

It is enough for caller of devlink_compat_switch_id_get() to hold the net
device to guarantee that devlink port is not destroyed concurrently. Remove
rtnl lock assertion and modify comment to warn user that they must hold
either rtnl lock or reference to net device. This is necessary to
accommodate future implementation of rtnl-unlocked TC offloads driver
callbacks.

Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
 net/core/devlink.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -6939,11 +6939,10 @@ int devlink_compat_switch_id_get(struct
 {
 	struct devlink_port *devlink_port;
 
-	/* RTNL mutex is held here which ensures that devlink_port
-	 * instance cannot disappear in the middle. No need to take
+	/* Caller must hold RTNL mutex or reference to dev, which ensures that
+	 * devlink_port instance cannot disappear in the middle. No need to take
 	 * any devlink lock as only permanent values are accessed.
 	 */
-	ASSERT_RTNL();
 	devlink_port = netdev_to_devlink_port(dev);
 	if (!devlink_port || !devlink_port->attrs.switch_port)
 		return -EOPNOTSUPP;