Message ID | 20220725001236.95062-1-bpoirier@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 9b134b1694ec8926926ba6b7b80884ea829245a0 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] bridge: Do not send empty IFLA_AF_SPEC attribute | expand |
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@nvidia.com> > Signed-off-by: Benjamin Poirier <bpoirier@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@blackwall.org>
Hello: This patch was applied to netdev/net.git (master) by Paolo Abeni <pabeni@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!
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;