]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/bridge/br_device.c
net: bridge: deny dev_set_mac_address() when unregistering
[mirror_ubuntu-bionic-kernel.git] / net / bridge / br_device.c
index af5b8c87f590c814ec80e855445de45de67abb38..fb75ef5da41c8deadb16dc1acec3c41c501415a0 100644 (file)
@@ -237,6 +237,12 @@ static int br_set_mac_address(struct net_device *dev, void *p)
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
 
+       /* dev_set_mac_addr() can be called by a master device on bridge's
+        * NETDEV_UNREGISTER, but since it's being destroyed do nothing
+        */
+       if (dev->reg_state != NETREG_REGISTERED)
+               return -EBUSY;
+
        spin_lock_bh(&br->lock);
        if (!ether_addr_equal(dev->dev_addr, addr->sa_data)) {
                /* Mac address will be changed in br_stp_change_bridge_id(). */