From: John Fastabend Date: Fri, 29 Mar 2013 08:18:37 +0000 (+0000) Subject: net: rtnetlink: fdb dflt dump must set idx used for cb->arg[0] X-Git-Tag: firefly_0821_release~3680^2~548^2~279 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=91f3e7b17412d42e933949a9c297072b13a04d41;p=firefly-linux-kernel-4.4.55.git net: rtnetlink: fdb dflt dump must set idx used for cb->arg[0] In rtnl_fdb_dump() when the fdb_dump ndo op is not populated we never set the idx value so that cb->arg[0] is always 0. Resulting in a endless loop of messages. Introduced with this commit, commit 090096bf3db1c281ddd034573260045888a68fea Author: Vlad Yasevich Date: Wed Mar 6 15:39:42 2013 +0000 net: generic fdb support for drivers without ndo_fdb_ CC: Vlad Yasevich Signed-off-by: John Fastabend Signed-off-by: David S. Miller --- diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 6fdfac8978f2..d2322d7f0f7b 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -2262,7 +2262,7 @@ skip: * @dev: netdevice * * Default netdevice operation to dump the existing unicast address list. - * Returns zero on success. + * Returns number of addresses from list put in skb. */ int ndo_dflt_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb, @@ -2303,7 +2303,7 @@ static int rtnl_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb) if (dev->netdev_ops->ndo_fdb_dump) idx = dev->netdev_ops->ndo_fdb_dump(skb, cb, dev, idx); else - ndo_dflt_fdb_dump(skb, cb, dev, idx); + idx = ndo_dflt_fdb_dump(skb, cb, dev, idx); } rcu_read_unlock();