Subject: Re: [PATCH] devinet: show all addresses assigned to interface

From: Patrick McHardy <[email-masked]>
Date: Thu, 06 Sep 2007 20:15:40 +0200

Stephen Hemminger wrote:
> Bug: http://bugzilla.kernel.org/show_bug.cgi?id=8876
>
> Not all ips are shown by "ip addr show" command when IPs number assigned to an
> interface is more than 60-80 (in fact it depends on broadcast/label etc
> presence on each address).
>
> Steps to reproduce:
> It's terribly simple to reproduce:
>
> # for i in $(seq 1 100); do ip ad add 10.0.$i.1/24 dev eth10 ; done
> # ip addr show
>
> this will _not_ show all IPs.
> Looks like the problem is in netlink/ipv4 message processing.
>
> This is fix from bug submitter, it looks correct.
>   

The same bug was introduced in decnet. Both are 2.6.22 regressions.

Signed-off-by: Patrick McHardy <[email-masked]>

diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
index fa6604f..8def682 100644
--- a/net/decnet/dn_dev.c
+++ b/net/decnet/dn_dev.c
@@ -814,7 +814,7 @@ static int dn_nl_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
 		for (ifa = dn_db->ifa_list, dn_idx = 0; ifa;
 		     ifa = ifa->ifa_next, dn_idx++) {
 			if (dn_idx < skip_naddr)
-				goto cont;
+				continue;
 
 			if (dn_nl_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid,
 					      cb->nlh->nlmsg_seq, RTM_NEWADDR,