Thread (103 messages) 103 messages, 10 authors, 2018-05-25

Re: [PATCH 04/14] net: sched: implement unlocked action init API

From: Jiri Pirko <jiri@resnulli.us>
Date: 2018-05-14 15:16:50
Also in: lkml, netfilter-devel

Mon, May 14, 2018 at 04:27:05PM CEST, vladbu@mellanox.com wrote:
Add additional 'unlocked' argument to act API init functions.
Argument is true when rtnl lock is not taken and false otherwise.
It is required to implement actions that need to release rtnl lock before
loading kernel module and reacquire if afterwards.

Signed-off-by: Vlad Buslov <redacted>
[...]

quoted hunk ↗ jump to hunk
@@ -721,9 +722,11 @@ struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp,
	a_o = tc_lookup_action_n(act_name);
	if (a_o == NULL) {
#ifdef CONFIG_MODULES
-		rtnl_unlock();
+		if (!unlocked)
+			rtnl_unlock();
		request_module("act_%s", act_name);
-		rtnl_lock();
+		if (!unlocked)
+			rtnl_lock();
Although I don't like this conditional locking scheme, I see no other
way to solve this :/ But I think would be better perhaps to rename
"unlocked" to something like "rtnl_held".

[...]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help