[PATCH] neighbour.c, pneigh_get_next() skips published entry
DORMANTno replies
From: Jari Takkala <hidden>
Date: 2006-05-11 16:29:11
Also in:
lkml
From: Jari Takkala <hidden>
Date: 2006-05-11 16:29:11
Also in:
lkml
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 <redacted>
--- linux-2.6.16.15.orig/net/core/neighbour.c 2006-05-0915:53:30.000000000 -0400
+++ linux-2.6.16.15/net/core/neighbour.c 2006-05-1016: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)