From: Jiri Benc <jbenc@redhat.com>
To: Mahesh Bandewar <maheshb@google.com>
Cc: David Miller <davem@davemloft.net>,
linux-netdev <netdev@vger.kernel.org>,
dcbw@redhat.com
Subject: Re: [PATCH net] ipvlan: fix addr hash list corruption
Date: Thu, 26 Mar 2015 00:21:53 +0100 [thread overview]
Message-ID: <20150326002154.3e179fec@griffin> (raw)
In-Reply-To: <CAF2d9jh5WaNYsMxp29GY3LqM08jjVPwLd1BQ1HLFKMsKFda6zQ@mail.gmail.com>
On Wed, 25 Mar 2015 11:11:47 -0700, Mahesh Bandewar wrote:
> On Wed, Mar 25, 2015 at 8:46 AM, David Miller <davem@davemloft.net> wrote:
> > From: Jiri Benc <jbenc@redhat.com>
> >> However, I'm wondering that when there's apparently no problem with the
> >> addresses being on the hash list when interface is down, what's the
> >> point in clearing the hash list in the ndo_stop handler and
> >> repopulating it in ndo_open?
> >>
> >> The following patch fixes the problem, too, and as a bonus removes code:
> >
> > I'll let Mahesh reply to this.
>
> Yes functionally you will get the same result. However during the RX
> processing, that code helps ipvlan-demux machine along with
> packet-dispatcher to determine it early to drop the packet rather than
> later.
When the interface is down, this doesn't matter, does it? You don't
send/receive anything when the interface is down. But this is actually
not so important for the discussion, see below.
> Also note that addition / deletion of address entries in
> hash-table is done in control-path while the demux / dispatcher
> operate in data-path. So for this reason I would prefer to leave the
> hash-table entries addition / deletion as it is.
I don't understand how the context in which the addresses are added is
relevant to the problem at hand. The addresses are still added and
removed in the control path whichever patch is applied.
Basically, there are two (and only two) possible cases: 1. the
addresses should not be on the hash list when the interface is down,
and 2. there's no problem with the addresses being on the hash list
when the interface is down.
If 1. is true, than my first patch does exactly that. It ensures that
the addresses are on the hash list if and only if the interface is up.
If 2. is true, than my second patch does that. Addresses are added to
the hash list on their addition to the interface and removed on their
removal.
The patch you sent (and the boolean flag David suggested) is actually
kind of strange hybrid: when the interface is down, sometimes the
addresses are on the hash list and sometimes not, depending on the
order in which the user added them and brought the interface up/down.
Maybe I'm just missing some important piece of information, though, in
which case it would help me if you could explain why these two
operations are fundamentally different (assuming ipvlan0 is up at the
beginning of each):
ip a a 1.2.3.4/24 dev ipvlan0
ip l s ipvlan0 down
-> at this point, 1.2.3.4 is *not* on the hash list
and
ip l s ipvlan0 down
ip a a 1.2.3.4/24 dev ipvlan0
-> at this point, 1.2.3.4 is on the hash list
Please note that my first patch turns both consistently to the first
result, my second patch turns both consistently to the second result.
Thanks,
Jiri
--
Jiri Benc
next prev parent reply other threads:[~2015-03-25 23:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-23 21:10 [PATCH net] ipvlan: fix addr hash list corruption Jiri Benc
2015-03-24 1:10 ` Mahesh Bandewar
2015-03-24 8:58 ` Jiri Benc
2015-03-24 17:00 ` David Miller
2015-03-24 17:06 ` Jiri Benc
2015-03-24 23:16 ` Mahesh Bandewar
2015-03-25 1:18 ` David Miller
2015-03-25 8:58 ` Jiri Benc
2015-03-25 15:46 ` David Miller
2015-03-25 18:11 ` Mahesh Bandewar
2015-03-25 18:47 ` Dan Williams
2015-03-25 23:21 ` Jiri Benc [this message]
2015-03-25 23:49 ` Jiri Benc
2015-03-26 2:15 ` Mahesh Bandewar
2015-03-26 8:45 ` Jiri Benc
2015-03-27 5:00 ` Mahesh Bandewar
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=20150326002154.3e179fec@griffin \
--to=jbenc@redhat.com \
--cc=davem@davemloft.net \
--cc=dcbw@redhat.com \
--cc=maheshb@google.com \
--cc=netdev@vger.kernel.org \
/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).