Re: [Patch net-next] act_mirred: use tcfm_dev in tcf_mirred_get_dev()
From: Jiri Pirko <jiri@resnulli.us>
Date: 2017-12-01 17:56:22
Thu, Nov 30, 2017 at 11:53:32PM CET, xiyou.wangcong@gmail.com wrote:
quoted hunk ↗ jump to hunk
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 <redacted> Cc: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: Cong Wang <redacted> --- 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;
Isn't this here so user may specify a ifindex of netdev which is not yet present on the system (not sure how much sense that would make though...)
quoted hunk ↗ jump to hunk
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