diff options
author | Vlad Buslov <vladbu@mellanox.com> | 2020-02-17 12:12:11 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-02-17 14:17:02 -0800 |
commit | 107f2d50916500985b9fffd7c77d8c14809f9802 (patch) | |
tree | d99a6519c6c2b5f32fccd320dae79635cc9d0bfe /include/net/tc_act | |
parent | 487e9589cc0ebebde4d1c4764aab271e5680a6b6 (diff) | |
download | lwn-107f2d50916500985b9fffd7c77d8c14809f9802.tar.gz lwn-107f2d50916500985b9fffd7c77d8c14809f9802.zip |
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>
Diffstat (limited to 'include/net/tc_act')
-rw-r--r-- | include/net/tc_act/tc_ct.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/net/tc_act/tc_ct.h b/include/net/tc_act/tc_ct.h index bdc20ab3b88d..a8b156402873 100644 --- a/include/net/tc_act/tc_ct.h +++ b/include/net/tc_act/tc_ct.h @@ -33,8 +33,10 @@ struct tcf_ct { }; #define to_ct(a) ((struct tcf_ct *)a) -#define to_ct_params(a) ((struct tcf_ct_params *) \ - rtnl_dereference((to_ct(a)->params))) +#define to_ct_params(a) \ + ((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) { |