diff options
author | Patrick McHardy <kaber@trash.net> | 2010-03-27 04:27:49 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-27 04:27:49 +0100 |
commit | 4b97efdf392563bf03b4917a0b5add2df65de39a (patch) | |
tree | 4add83ac917bb6d8319fc48c64529fd607721151 /net/ipv6/addrconf.c | |
parent | tulip: Fix null dereference in uli526x_rx_packet() (diff) | |
download | linux-4b97efdf392563bf03b4917a0b5add2df65de39a.tar.xz linux-4b97efdf392563bf03b4917a0b5add2df65de39a.zip |
net: fix netlink address dumping in IPv4/IPv6
When a dump is interrupted at the last device in a hash chain and
then continued, "idx" won't get incremented past s_idx, so s_ip_idx
is not reset when moving on to the next device. This means of all
following devices only the last n - s_ip_idx addresses are dumped.
Tested-by: Pawel Staszewski <pstaszewski@itcare.pl>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to '')
-rw-r--r-- | net/ipv6/addrconf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 3381b4317c27..7e567ae5eaab 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3610,7 +3610,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb, hlist_for_each_entry_rcu(dev, node, head, index_hlist) { if (idx < s_idx) goto cont; - if (idx > s_idx) + if (h > s_h || idx > s_idx) s_ip_idx = 0; ip_idx = 0; if ((idev = __in6_dev_get(dev)) == NULL) |