diff options
Diffstat (limited to 'include/net/tc_act/tc_csum.h')
| -rw-r--r-- | include/net/tc_act/tc_csum.h | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h index 781f3433a0be..9470fd7e4350 100644 --- a/include/net/tc_act/tc_csum.h +++ b/include/net/tc_act/tc_csum.h @@ -6,10 +6,16 @@  #include <net/act_api.h>  #include <linux/tc_act/tc_csum.h> +struct tcf_csum_params { +	int action; +	u32 update_flags; +	struct rcu_head rcu; +}; +  struct tcf_csum {  	struct tc_action common; -	u32 update_flags; +	struct tcf_csum_params __rcu *params;  };  #define to_tcf_csum(a) ((struct tcf_csum *)a) @@ -24,7 +30,13 @@ static inline bool is_tcf_csum(const struct tc_action *a)  static inline u32 tcf_csum_update_flags(const struct tc_action *a)  { -	return to_tcf_csum(a)->update_flags; +	u32 update_flags; + +	rcu_read_lock(); +	update_flags = rcu_dereference(to_tcf_csum(a)->params)->update_flags; +	rcu_read_unlock(); + +	return update_flags;  }  #endif /* __NET_TC_CSUM_H */ |