net: sched: refactor ct action helpers to require tcf_lock

In order to remove rtnl lock dependency from flow_action representation
translator, change rtnl_dereference() to rcu_dereference_protected() in ct
action helpers that provide external access to zone and action values. This
is safe to do because the functions are not called from anywhere else
outside flow_action infrastructure which was modified to obtain tcf_lock
when accessing action data in one of previous patches in the series.

Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Vlad Buslov 2020-02-17 12:12:11 +02:00 committed by David S. Miller
parent 487e9589cc
commit 107f2d5091
1 changed files with 4 additions and 2 deletions

View File

@ -33,8 +33,10 @@ struct tcf_ct {
}; };
#define to_ct(a) ((struct tcf_ct *)a) #define to_ct(a) ((struct tcf_ct *)a)
#define to_ct_params(a) ((struct tcf_ct_params *) \ #define to_ct_params(a) \
rtnl_dereference((to_ct(a)->params))) ((struct tcf_ct_params *) \
rcu_dereference_protected(to_ct(a)->params, \
lockdep_is_held(&a->tcfa_lock)))
static inline uint16_t tcf_ct_zone(const struct tc_action *a) static inline uint16_t tcf_ct_zone(const struct tc_action *a)
{ {