netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] neighbour.c, pneigh_get_next() skips published entry
@ 2006-09-25 23:45 Andrew Morton
  2006-09-25 23:47 ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2006-09-25 23:45 UTC (permalink / raw)
  To: netdev; +Cc: Jari Takkala


I've been sitting on this patch because afaik the problem which it purports
to fix remains unfixed.

Should I drop it??

Thanks.



From: "Jari Takkala" <Jari.Takkala@Q9.com>

Fix a problem where output from /proc/net/arp skips a record when the full
output does not fit into the users read() buffer.

To reproduce: publish a large number of ARP entries (more than 10 required
on my system).  Run 'dd if=/proc/net/arp of=arp-1024.out bs=1024'.  View
the output, one entry will be missing.

Signed-off-by: Jari Takkala <jari.takkala@q9.com>

[akpm: submitted before, discussion ended inconclusively, iirc]
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 net/core/neighbour.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff -puN net/core/neighbour.c~neighbourc-pneigh_get_next-skips-published-entry net/core/neighbour.c
--- a/net/core/neighbour.c~neighbourc-pneigh_get_next-skips-published-entry
+++ a/net/core/neighbour.c
@@ -2209,6 +2209,12 @@ static struct pneigh_entry *pneigh_get_n
 	struct neigh_seq_state *state = seq->private;
 	struct neigh_table *tbl = state->tbl;
 
+	if (pos != NULL && *pos == 1 &&
+			(pn->next || tbl->phash_buckets[state->bucket])) {
+		--(*pos);
+		return pn;
+	}
+
 	pn = pn->next;
 	while (!pn) {
 		if (++state->bucket > PNEIGH_HASHMASK)
_


^ permalink raw reply	[flat|nested] 6+ messages in thread
* [PATCH] neighbour.c, pneigh_get_next() skips published entry
@ 2006-05-11 16:29 Jari Takkala
  0 siblings, 0 replies; 6+ messages in thread
From: Jari Takkala @ 2006-05-11 16:29 UTC (permalink / raw)
  To: linux-kernel; +Cc: netdev

The following patch fixes a problem where output from /proc/net/arp
skips a record when the full output does not fit into the users read()
buffer.

To reproduce: publish a large number of ARP entries (more than 10
required on my system). Run 'dd if=/proc/net/arp of=arp-1024.out
bs=1024'. View the output, one entry will be missing.

Please review and commit if acceptable.

Signed-off-by: Jari Takkala <jari.takkala@q9.com>

--- linux-2.6.16.15.orig/net/core/neighbour.c   2006-05-09
15:53:30.000000000 -0400
+++ linux-2.6.16.15/net/core/neighbour.c        2006-05-10
16:06:40.000000000 -0400
@@ -2120,6 +2120,11 @@
        struct neigh_seq_state *state = seq->private;
        struct neigh_table *tbl = state->tbl;

+       if (pos != NULL && *pos == 1 && (pn->next ||
tbl->phash_buckets[state->bucket])) {
+               --(*pos);
+               return pn;
+       }
+
        pn = pn->next;
        while (!pn) {
                if (++state->bucket > PNEIGH_HASHMASK)


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-09-27 11:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-25 23:45 [patch] neighbour.c, pneigh_get_next() skips published entry Andrew Morton
2006-09-25 23:47 ` David Miller
2006-09-26  0:34   ` Andrew Morton
2006-09-26  5:59   ` Philip Craig
2006-09-27 11:12     ` Herbert Xu
  -- strict thread matches above, loose matches on Subject: below --
2006-05-11 16:29 [PATCH] " Jari Takkala

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).