]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
bonding: report duplicate MAC address in all situations
authorHangbin Liu <liuhangbin@gmail.com>
Tue, 25 Feb 2025 03:39:14 +0000 (03:39 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:13:05 +0000 (11:13 +0200)
[ Upstream commit 28d68d396a1cd21591e8c6d74afbde33a7ea107e ]

Normally, a bond uses the MAC address of the first added slave as the bond’s
MAC address. And the bond will set active slave’s MAC address to bond’s
address if fail_over_mac is set to none (0) or follow (2).

When the first slave is removed, the bond will still use the removed slave’s
MAC address, which can lead to a duplicate MAC address and potentially cause
issues with the switch. To avoid confusion, let's warn the user in all
situations, including when fail_over_mac is set to 2 or not in active-backup
mode.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/20250225033914.18617-1-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/bonding/bond_main.c

index 4da5fcb7def47f6838250c08211fd7397ecdc792..203d3467dcbcdec4782dc728779c0f0df09d2c66 100644 (file)
@@ -2551,7 +2551,7 @@ static int __bond_release_one(struct net_device *bond_dev,
 
        RCU_INIT_POINTER(bond->current_arp_slave, NULL);
 
-       if (!all && (!bond->params.fail_over_mac ||
+       if (!all && (bond->params.fail_over_mac != BOND_FOM_ACTIVE ||
                     BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP)) {
                if (ether_addr_equal_64bits(bond_dev->dev_addr, slave->perm_hwaddr) &&
                    bond_has_slaves(bond))