Message ID | 20220126131025.2500274-1-nikolay@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | dcb2c5c6ca9b9177f04abaf76e5a983d177c9414 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: bridge: vlan: fix single net device option dumping | expand |
Hello: This patch was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Wed, 26 Jan 2022 15:10:25 +0200 you wrote: > When dumping vlan options for a single net device we send the same > entries infinitely because user-space expects a 0 return at the end but > we keep returning skb->len and restarting the dump on retry. Fix it by > returning the value from br_vlan_dump_dev() if it completed or there was > an error. The only case that must return skb->len is when the dump was > incomplete and needs to continue (-EMSGSIZE). > > [...] Here is the summary with links: - [net] net: bridge: vlan: fix single net device option dumping https://git.kernel.org/netdev/net/c/dcb2c5c6ca9b You are awesome, thank you!
diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c index 84ba456a78cc..43201260e37b 100644 --- a/net/bridge/br_vlan.c +++ b/net/bridge/br_vlan.c @@ -2020,7 +2020,8 @@ static int br_vlan_rtm_dump(struct sk_buff *skb, struct netlink_callback *cb) goto out_err; } err = br_vlan_dump_dev(dev, skb, cb, dump_flags); - if (err && err != -EMSGSIZE) + /* if the dump completed without an error we return 0 here */ + if (err != -EMSGSIZE) goto out_err; } else { for_each_netdev_rcu(net, dev) {
When dumping vlan options for a single net device we send the same entries infinitely because user-space expects a 0 return at the end but we keep returning skb->len and restarting the dump on retry. Fix it by returning the value from br_vlan_dump_dev() if it completed or there was an error. The only case that must return skb->len is when the dump was incomplete and needs to continue (-EMSGSIZE). Reported-by: Benjamin Poirier <bpoirier@nvidia.com> Fixes: 8dcea187088b ("net: bridge: vlan: add rtm definitions and dump support") Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com> --- net/bridge/br_vlan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)