]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
vxlan: fix fdb_dump index calculation
authorAtzm Watanabe <atzm@iij.ad.jp>
Mon, 10 Aug 2015 14:39:09 +0000 (23:39 +0900)
committerDavid S. Miller <davem@davemloft.net>
Tue, 11 Aug 2015 04:15:18 +0000 (21:15 -0700)
When too many remotes are bound to an FDB entry, index may not be increased.
This problem will be caused on the large scale environment that is based on
the unicast default destination, for instance.

Signed-off-by: Atzm Watanabe <atzm@iij.ad.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index b6731fad19baefc17d3ffd135d9891fa2d39fb81..06c0731ae619a041786938b6957a29024595bd81 100644 (file)
@@ -931,10 +931,10 @@ static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
                hlist_for_each_entry_rcu(f, &vxlan->fdb_head[h], hlist) {
                        struct vxlan_rdst *rd;
 
-                       if (idx < cb->args[0])
-                               goto skip;
-
                        list_for_each_entry_rcu(rd, &f->remotes, list) {
+                               if (idx < cb->args[0])
+                                       goto skip;
+
                                err = vxlan_fdb_info(skb, vxlan, f,
                                                     NETLINK_CB(cb->skb).portid,
                                                     cb->nlh->nlmsg_seq,
@@ -942,9 +942,9 @@ static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
                                                     NLM_F_MULTI, rd);
                                if (err < 0)
                                        goto out;
-                       }
 skip:
-                       ++idx;
+                               ++idx;
+                       }
                }
        }
 out: