]> git.baikalelectronics.ru Git - kernel.git/commitdiff
bridge: Do not send empty IFLA_AF_SPEC attribute
authorBenjamin Poirier <bpoirier@nvidia.com>
Mon, 25 Jul 2022 00:12:36 +0000 (09:12 +0900)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 26 Jul 2022 13:35:53 +0000 (15:35 +0200)
After commit cb8f2435c6ed ("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: cb8f2435c6ed ("bridge: Netlink interface fix.")
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://lore.kernel.org/r/20220725001236.95062-1-bpoirier@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/bridge/br_netlink.c

index bb01776d2d88c46ac29ba94c2647fe26ff3468df..c96509c442a57cc023b7f3054242d35b8759c064 100644 (file)
@@ -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;