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?


[...]


> 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.


>               if (ret < 0)
>                       return ret;
>               ok_count += ret;
>-- 
>2.7.5
>

Reply via email to