From: Shmulik Ladkani <shmulik.ladkani@gmail.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Miller <davem@davemloft.net>,
Jamal Hadi Salim <jhs@mojatatu.com>,
WANG Cong <xiyou.wangcong@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Daniel Borkmann <daniel@iogearbox.net>,
Florian Westphal <fw@strlen.de>,
netdev@vger.kernel.org
Subject: Re: [PATCH v2 net-next 4/4] net/sched: act_mirred: Implement ingress actions
Date: Thu, 29 Sep 2016 13:35:36 +0300 [thread overview]
Message-ID: <20160929133536.79de5ae6@halley> (raw)
In-Reply-To: <1475011633.28155.68.camel@edumazet-glaptop3.roam.corp.google.com>
Hi Eric,
On Tue, 27 Sep 2016 14:27:13 -0700 Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
> Since this runs lockless, another cpu might change m->tcfm_eaction in
> the middle, and you could call dev_queue_xmit(skb2) while the skb2 was
> prepared for the opposite action.
Well, seem members of 'struct tcf_mirred' are out of sync wrt to each
other, even in existing code, regadless this patch:
- 'tcfm_dev' may be assigned, but 'tcfm_ok_push' not yet updated,
may result in skb_push_rcsum being called/not called
- 'tcfm_eaction' is changed, in between "mirror is always swallowed" to
the final 'out:' label,
may result in wrong tc_verd assigned (or lack of assignment)
Seems the whole "params" need be rcu_dereferenced, like in
tunnel_key_act, or like your suggestion in
https://patchwork.ozlabs.org/patch/667680/.
I'm gonna fix the new problem you pointed out, by reading-once
'tcfm_eaction' early (right when tcfm_dev is dereferenced) knowing this
is just "keeping things as is wrt running lockless", without introducing
any new non-coherent code.
Thanks,
Shmulik
prev parent reply other threads:[~2016-09-29 10:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-27 20:59 [PATCH v2 net-next 0/4] act_mirred: Ingress actions support Shmulik Ladkani
2016-09-27 20:59 ` [PATCH v2 net-next 1/4] net/sched: act_mirred: Rename tcfm_ok_push to tcfm_mac_header_xmit and make it a bool Shmulik Ladkani
2016-09-27 20:59 ` [PATCH v2 net-next 2/4] net/sched: act_mirred: Refactor detection whether dev needs xmit at mac header Shmulik Ladkani
2016-09-27 20:59 ` [PATCH v2 net-next 3/4] net/sched: tc_mirred: Rename public predicates 'is_tcf_mirred_redirect' and 'is_tcf_mirred_mirror' Shmulik Ladkani
2016-09-27 20:59 ` [PATCH v2 net-next 4/4] net/sched: act_mirred: Implement ingress actions Shmulik Ladkani
2016-09-27 21:27 ` Eric Dumazet
2016-09-27 21:42 ` Shmulik Ladkani
2016-09-27 22:32 ` Eric Dumazet
2016-09-29 10:35 ` Shmulik Ladkani [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160929133536.79de5ae6@halley \
--to=shmulik.ladkani@gmail.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=fw@strlen.de \
--cc=jhs@mojatatu.com \
--cc=netdev@vger.kernel.org \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).