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
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>
[...]
@@ -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". [...]