From: 张胜举 <zhangshengju@cmss.chinamobile.com>
To: "'David Ahern'" <dsa@cumulusnetworks.com>, <netdev@vger.kernel.org>
Subject: RE: [net,v2] neigh: fix the loop index error in neigh dump
Date: Mon, 28 Nov 2016 14:28:18 +0800 [thread overview]
Message-ID: <002b01d24940$9e16e1c0$da44a540$@cmss.chinamobile.com> (raw)
In-Reply-To: <7e3623c4-a55e-5809-ca9a-2dbd59cda871@cumulusnetworks.com>
> -----Original Message-----
> From: David Ahern [mailto:dsa@cumulusnetworks.com]
> Sent: Monday, November 28, 2016 1:07 PM
> To: 张胜举 <zhangshengju@cmss.chinamobile.com>;
> netdev@vger.kernel.org
> Subject: Re: [net,v2] neigh: fix the loop index error in neigh dump
>
> On 11/27/16 9:50 PM, 张胜举 wrote:
> > No, when dump request must be processed by multiple 'recv/recvmsg'
> > system calls, idx stores which dev/neigh the previous call have
> > processed, so that next call will scan from the right place.
>
> I have tested multiple calls and I do not see redundant information or
missing
> information.
>
> >
> > So no matter whether the dev/neigh is filtered, the idx should be
> > increased anyway.
>
> No, it does not. Again, idx is the index in the list of devices/ of
interest. It is
> NOT a device index nor is it the absolute index in the list. It is a
relative index.
> The filter is the same across recvmsg calls so the idx count is absolutely
fine.
>
> Produce a test case that fails.
David, I know your point. And I agree with you that this will not make
redundant or missing link information.
But this will cause the filtered out device be scanned multiple times.
For example, assume that netlink message can only store two devices info.
And eth2-eth5 are filtered out.
For the first loop, idx will point to eth2, but the code already scan to
eth6.
eth0->eth1->eth2(out)->eth3(out)-> eth4(out)->eth5(out)->eth6->eth7
^
The next loop, the code will start to scan from eth2 to eth8, but eth2-eth5
already scanned by previous loop. After this loop, idx will point to eth4.
eth0->eth1->eth2(out)->eth3(out)->eth4(out)->eth5(out)->eth6->eth7->eth8
^
So this will cause the same device to be scanned multiple times.
Almost all other dump functions treat idx as the absolute index in the list,
and will not have the above problem.
We don't treat this a bugfix, but i think we'd better in line with other
dump functions.
prev parent reply other threads:[~2016-11-28 6:28 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-28 1:32 [net,v2] neigh: fix the loop index error in neigh dump Zhang Shengju
2016-11-28 2:09 ` David Ahern
2016-11-28 2:34 ` 张胜举
2016-11-28 2:39 ` David Ahern
2016-11-28 2:53 ` 张胜举
2016-11-28 2:56 ` David Ahern
2016-11-28 3:09 ` David Ahern
2016-11-28 4:50 ` 张胜举
2016-11-28 5:07 ` David Ahern
2016-11-28 6:28 ` 张胜举 [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='002b01d24940$9e16e1c0$da44a540$@cmss.chinamobile.com' \
--to=zhangshengju@cmss.chinamobile.com \
--cc=dsa@cumulusnetworks.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