Give interested parties an opportunity to veto an impending HW address
change.

Signed-off-by: Petr Machata <pe...@mellanox.com>
Acked-by: Jiri Pirko <j...@mellanox.com>
Reviewed-by: Ido Schimmel <ido...@mellanox.com>
---
 drivers/net/bonding/bond_main.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 66d9a6c7b9c5..a9d597f28023 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -612,8 +612,14 @@ static void bond_hw_addr_swap(struct bonding *bond, struct 
slave *new_active,
 static int bond_set_dev_addr(struct net_device *bond_dev,
                             struct net_device *slave_dev)
 {
+       int err;
+
        netdev_dbg(bond_dev, "bond_dev=%p slave_dev=%p slave_dev->name=%s 
slave_dev->addr_len=%d\n",
                   bond_dev, slave_dev, slave_dev->name, slave_dev->addr_len);
+       err = dev_pre_changeaddr_notify(bond_dev, slave_dev->dev_addr, NULL);
+       if (err)
+               return err;
+
        memcpy(bond_dev->dev_addr, slave_dev->dev_addr, slave_dev->addr_len);
        bond_dev->addr_assign_type = NET_ADDR_STOLEN;
        call_netdevice_notifiers(NETDEV_CHANGEADDR, bond_dev);
-- 
2.4.11

Reply via email to