aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/vxlan.c
diff options
context:
space:
mode:
authorAtzm Watanabe <atzm@iij.ad.jp>2015-08-10 23:39:09 +0900
committerDavid S. Miller <davem@davemloft.net>2015-08-10 21:15:18 -0700
commit07a51cd3794960548627a27aae68c1446341db32 (patch)
treef3a639804940a0e2d2285704418995da1f1765a1 /drivers/net/vxlan.c
parentmellanox: mlxsw: Use '%zx' to print size_t format (diff)
downloadlinux-dev-07a51cd3794960548627a27aae68c1446341db32.tar.xz
linux-dev-07a51cd3794960548627a27aae68c1446341db32.zip
vxlan: fix fdb_dump index calculation
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>
Diffstat (limited to 'drivers/net/vxlan.c')
-rw-r--r--drivers/net/vxlan.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index b6731fad19ba..06c0731ae619 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -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: