lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20231219181623.3845083-5-victor@mojatatu.com> Date: Tue, 19 Dec 2023 15:16:22 -0300 From: Victor Nogueira <victor@...atatu.com> To: jhs@...atatu.com, davem@...emloft.net, edumazet@...gle.com, kuba@...nel.org, pabeni@...hat.com, xiyou.wangcong@...il.com, jiri@...nulli.us Cc: mleitner@...hat.com, vladbu@...dia.com, paulb@...dia.com, pctammela@...atatu.com, netdev@...r.kernel.org, kernel@...atatu.com Subject: [PATCH net-next v8 4/5] net/sched: act_mirred: Add helper function tcf_mirred_replace_dev The act of replacing a device will be repeated by the init logic for the block ID in the patch that allows mirred to a block. Therefore we encapsulate this functionality in a function (tcf_mirred_replace_dev) so that we can reuse it and avoid code repetition. Co-developed-by: Jamal Hadi Salim <jhs@...atatu.com> Signed-off-by: Jamal Hadi Salim <jhs@...atatu.com> Co-developed-by: Pedro Tammela <pctammela@...atatu.com> Signed-off-by: Pedro Tammela <pctammela@...atatu.com> Signed-off-by: Victor Nogueira <victor@...atatu.com> --- net/sched/act_mirred.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 6f2544c1e396..a1be8f3c4a8e 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -89,6 +89,16 @@ static const struct nla_policy mirred_policy[TCA_MIRRED_MAX + 1] = { static struct tc_action_ops act_mirred_ops; +static void tcf_mirred_replace_dev(struct tcf_mirred *m, + struct net_device *ndev) +{ + struct net_device *odev; + + odev = rcu_replace_pointer(m->tcfm_dev, ndev, + lockdep_is_held(&m->tcf_lock)); + netdev_put(odev, &m->tcfm_dev_tracker); +} + static int tcf_mirred_init(struct net *net, struct nlattr *nla, struct nlattr *est, struct tc_action **a, struct tcf_proto *tp, @@ -170,7 +180,7 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla, spin_lock_bh(&m->tcf_lock); if (parm->ifindex) { - struct net_device *odev, *ndev; + struct net_device *ndev; ndev = dev_get_by_index(net, parm->ifindex); if (!ndev) { @@ -179,9 +189,7 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla, goto put_chain; } mac_header_xmit = dev_is_mac_header_xmit(ndev); - odev = rcu_replace_pointer(m->tcfm_dev, ndev, - lockdep_is_held(&m->tcf_lock)); - netdev_put(odev, &m->tcfm_dev_tracker); + tcf_mirred_replace_dev(m, ndev); netdev_tracker_alloc(ndev, &m->tcfm_dev_tracker, GFP_ATOMIC); m->tcfm_mac_header_xmit = mac_header_xmit; } -- 2.25.1
Powered by blists - more mailing lists