From: "Jari Takkala" <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> --- 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 --- devel/net/core/neighbour.c~neighbourc-pneigh_get_next-skips-published-entry 2006-06-01 20:31:49.000000000 -0700 +++ devel-akpm/net/core/neighbour.c 2006-06-01 20:31:49.000000000 -0700 @@ -2138,6 +2138,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) _ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html