tcfm_dev always points to the correct netdev and we already
hold a refcnt, so no need to use ifindex to lookup again.

If we would support moving target netdev across netns, using
pointer would be better than ifindex.

Cc: Jiri Pirko <j...@mellanox.com>
Cc: Jamal Hadi Salim <j...@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com>
---
 include/net/tc_act/tc_mirred.h | 1 -
 net/sched/act_mirred.c         | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h
index 21d253c9a8c6..b2dbbfaefd22 100644
--- a/include/net/tc_act/tc_mirred.h
+++ b/include/net/tc_act/tc_mirred.h
@@ -11,7 +11,6 @@ struct tcf_mirred {
        int                     tcfm_ifindex;
        bool                    tcfm_mac_header_xmit;
        struct net_device __rcu *tcfm_dev;
-       struct net              *net;
        struct list_head        tcfm_list;
 };
 #define to_mirred(a) ((struct tcf_mirred *)a)
diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c
index 8b3e59388480..fe6489f9c3cf 100644
--- a/net/sched/act_mirred.c
+++ b/net/sched/act_mirred.c
@@ -140,7 +140,6 @@ static int tcf_mirred_init(struct net *net, struct nlattr 
*nla,
        m->tcfm_eaction = parm->eaction;
        if (dev != NULL) {
                m->tcfm_ifindex = parm->ifindex;
-               m->net = net;
                if (ret != ACT_P_CREATED)
                        dev_put(rcu_dereference_protected(m->tcfm_dev, 1));
                dev_hold(dev);
@@ -318,7 +317,7 @@ static struct net_device *tcf_mirred_get_dev(const struct 
tc_action *a)
 {
        struct tcf_mirred *m = to_mirred(a);
 
-       return __dev_get_by_index(m->net, m->tcfm_ifindex);
+       return rtnl_dereference(m->tcfm_dev);
 }
 
 static struct tc_action_ops act_mirred_ops = {
-- 
2.13.0

Reply via email to