On Tue 07 Aug 2018 at 16:36, Jiri Pirko <j...@resnulli.us> wrote: > Mon, Aug 06, 2018 at 08:54:23AM CEST, vla...@mellanox.com wrote: > > [...] > >>diff --git a/include/net/tc_act/tc_tunnel_key.h >>b/include/net/tc_act/tc_tunnel_key.h >>index 46b8c7f1c8d5..e6e475d788c6 100644 >>--- a/include/net/tc_act/tc_tunnel_key.h >>+++ b/include/net/tc_act/tc_tunnel_key.h >>@@ -30,26 +30,47 @@ struct tcf_tunnel_key { >> >> static inline bool is_tcf_tunnel_set(const struct tc_action *a) >> { >>+ bool ret = false; >> #ifdef CONFIG_NET_CLS_ACT >> struct tcf_tunnel_key *t = to_tunnel_key(a); >>- struct tcf_tunnel_key_params *params = rtnl_dereference(t->params); >>+ struct tcf_tunnel_key_params *params; >> >>+ rcu_read_lock(); >>+ params = rcu_dereference(t->params); >> if (a->ops && a->ops->type == TCA_ACT_TUNNEL_KEY) >>- return params->tcft_action == TCA_TUNNEL_KEY_ACT_SET; >>+ ret = params->tcft_action == TCA_TUNNEL_KEY_ACT_SET; >>+ rcu_read_unlock(); >> #endif >>- return false; >>+ return ret; >> } >> >> static inline bool is_tcf_tunnel_release(const struct tc_action *a) > > Why are these tunnel things in a mirred patch?
Mistake during re-slit. Will move those to tunnel_key patch. > > > [...] > > >> static struct net_device *tcf_mirred_get_dev(const struct tc_action *a) >> { >> struct tcf_mirred *m = to_mirred(a); >>+ struct net_device *dev; >>+ >>+ rcu_read_lock(); >>+ dev = rcu_dereference(m->tcfm_dev); >>+ if (dev) >>+ dev_hold(dev); >>+ rcu_read_unlock(); >> >>- return rtnl_dereference(m->tcfm_dev); >>+ return dev; >> } >> >> static int tcf_mirred_delete(struct net *net, u32 index) >>diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c >>index e8b0bbd0883f..0cce0eadc28b 100644 >>--- a/net/sched/cls_api.c >>+++ b/net/sched/cls_api.c >>@@ -2167,6 +2167,7 @@ static int tc_exts_setup_cb_egdev_call(struct tcf_exts >>*exts, >> if (!dev) >> continue; >> ret = tc_setup_cb_egdev_call(dev, type, type_data, err_stop); >>+ dev_put(dev); > > This looks really odd. a->ops->put_dev is needed. Got it. Will implement put_dev in v2. > > >> if (ret < 0) >> return ret; >> ok_count += ret; >>-- >>2.7.5 >> Thanks for reviewing my code!