bonding: fix reference count leak in balance-alb mode
authorJay Vosburgh <jay.vosburgh@canonical.com>
Thu, 11 Aug 2022 05:06:53 +0000 (22:06 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 11 Aug 2022 15:51:05 +0000 (08:51 -0700)
Commit d5410ac7b0ba ("net:bonding:support balance-alb interface
with vlan to bridge") introduced a reference count leak by not releasing
the reference acquired by ip_dev_find().  Remedy this by insuring the
reference is released.

Fixes: d5410ac7b0ba ("net:bonding:support balance-alb interface with vlan to bridge")
Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://lore.kernel.org/r/26758.1660194413@famine
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/bonding/bond_alb.c

index 60cb9a0..b9dbad3 100644 (file)
@@ -668,8 +668,11 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
 
        dev = ip_dev_find(dev_net(bond->dev), arp->ip_src);
        if (dev) {
-               if (netif_is_bridge_master(dev))
+               if (netif_is_bridge_master(dev)) {
+                       dev_put(dev);
                        return NULL;
+               }
+               dev_put(dev);
        }
 
        if (arp->op_code == htons(ARPOP_REPLY)) {