Benjamin Poirier
2022-Jul-25 00:12 UTC
[Bridge] [PATCH net] bridge: Do not send empty IFLA_AF_SPEC attribute
After commit b6c02ef54913 ("bridge: Netlink interface fix."), br_fill_ifinfo() started to send an empty IFLA_AF_SPEC attribute when a bridge vlan dump is requested but an interface does not have any vlans configured. iproute2 ignores such an empty attribute since commit b262a9becbcb ("bridge: Fix output with empty vlan lists") but older iproute2 versions as well as other utilities have their output changed by the cited kernel commit, resulting in failed test cases. Regardless, emitting an empty attribute is pointless and inefficient. Avoid this change by canceling the attribute if no AF_SPEC data was added. Fixes: b6c02ef54913 ("bridge: Netlink interface fix.") Reviewed-by: Ido Schimmel <idosch at nvidia.com> Signed-off-by: Benjamin Poirier <bpoirier at nvidia.com> --- net/bridge/br_netlink.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index bb01776d2d88..c96509c442a5 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c @@ -589,9 +589,13 @@ static int br_fill_ifinfo(struct sk_buff *skb, } done: + if (af) { + if (nlmsg_get_pos(skb) - (void *)af > nla_attr_size(0)) + nla_nest_end(skb, af); + else + nla_nest_cancel(skb, af); + } - if (af) - nla_nest_end(skb, af); nlmsg_end(skb, nlh); return 0; -- 2.36.1
Nikolay Aleksandrov
2022-Jul-25 07:43 UTC
[Bridge] [PATCH net] bridge: Do not send empty IFLA_AF_SPEC attribute
On 25/07/2022 03:12, Benjamin Poirier wrote:> After commit b6c02ef54913 ("bridge: Netlink interface fix."), > br_fill_ifinfo() started to send an empty IFLA_AF_SPEC attribute when a > bridge vlan dump is requested but an interface does not have any vlans > configured. > > iproute2 ignores such an empty attribute since commit b262a9becbcb > ("bridge: Fix output with empty vlan lists") but older iproute2 versions as > well as other utilities have their output changed by the cited kernel > commit, resulting in failed test cases. Regardless, emitting an empty > attribute is pointless and inefficient. > > Avoid this change by canceling the attribute if no AF_SPEC data was added. > > Fixes: b6c02ef54913 ("bridge: Netlink interface fix.") > Reviewed-by: Ido Schimmel <idosch at nvidia.com> > Signed-off-by: Benjamin Poirier <bpoirier at nvidia.com> > --- > net/bridge/br_netlink.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c > index bb01776d2d88..c96509c442a5 100644 > --- a/net/bridge/br_netlink.c > +++ b/net/bridge/br_netlink.c > @@ -589,9 +589,13 @@ static int br_fill_ifinfo(struct sk_buff *skb, > } > > done: > + if (af) { > + if (nlmsg_get_pos(skb) - (void *)af > nla_attr_size(0)) > + nla_nest_end(skb, af); > + else > + nla_nest_cancel(skb, af); > + } > > - if (af) > - nla_nest_end(skb, af); > nlmsg_end(skb, nlh); > return 0; >br_fill_ifinfo has been a mess, at some point we have to refactor it. Anyway, thanks for the patch: Acked-by: Nikolay Aleksandrov <razor at blackwall.org>
patchwork-bot+netdevbpf at kernel.org
2022-Jul-26 14:00 UTC
[Bridge] [PATCH net] bridge: Do not send empty IFLA_AF_SPEC attribute
Hello: This patch was applied to netdev/net.git (master) by Paolo Abeni <pabeni at redhat.com>: On Mon, 25 Jul 2022 09:12:36 +0900 you wrote:> After commit b6c02ef54913 ("bridge: Netlink interface fix."), > br_fill_ifinfo() started to send an empty IFLA_AF_SPEC attribute when a > bridge vlan dump is requested but an interface does not have any vlans > configured. > > iproute2 ignores such an empty attribute since commit b262a9becbcb > ("bridge: Fix output with empty vlan lists") but older iproute2 versions as > well as other utilities have their output changed by the cited kernel > commit, resulting in failed test cases. Regardless, emitting an empty > attribute is pointless and inefficient. > > [...]Here is the summary with links: - [net] bridge: Do not send empty IFLA_AF_SPEC attribute https://git.kernel.org/netdev/net/c/9b134b1694ec You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html