mirror of https://gitee.com/openkylin/linux.git
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:
parent
487e9589cc
commit
107f2d5091
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue