Merge tag 'mm-slub-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka...
[linux-2.6-microblaze.git] / net / bridge / br_if.c
index 6e4a323..4a02f8b 100644 (file)
@@ -456,7 +456,7 @@ int br_add_bridge(struct net *net, const char *name)
        dev_net_set(dev, net);
        dev->rtnl_link_ops = &br_link_ops;
 
-       res = register_netdev(dev);
+       res = register_netdevice(dev);
        if (res)
                free_netdev(dev);
        return res;
@@ -467,7 +467,6 @@ int br_del_bridge(struct net *net, const char *name)
        struct net_device *dev;
        int ret = 0;
 
-       rtnl_lock();
        dev = __dev_get_by_name(net, name);
        if (dev == NULL)
                ret =  -ENXIO;  /* Could not find device */
@@ -485,7 +484,6 @@ int br_del_bridge(struct net *net, const char *name)
        else
                br_dev_delete(dev, NULL);
 
-       rtnl_unlock();
        return ret;
 }
 
@@ -616,6 +614,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
 
        err = dev_set_allmulti(dev, 1);
        if (err) {
+               br_multicast_del_port(p);
                kfree(p);       /* kobject not yet init'd, manually free */
                goto err1;
        }
@@ -643,10 +642,6 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
        if (err)
                goto err5;
 
-       err = nbp_switchdev_mark_set(p);
-       if (err)
-               goto err6;
-
        dev_disable_lro(dev);
 
        list_add_rcu(&p->list, &br->port_list);
@@ -684,13 +679,13 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
                 */
                err = dev_pre_changeaddr_notify(br->dev, dev->dev_addr, extack);
                if (err)
-                       goto err7;
+                       goto err6;
        }
 
        err = nbp_vlan_init(p, extack);
        if (err) {
                netdev_err(dev, "failed to initialize vlan filtering on this port\n");
-               goto err7;
+               goto err6;
        }
 
        spin_lock_bh(&br->lock);
@@ -713,13 +708,12 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
 
        return 0;
 
-err7:
+err6:
        if (fdb_synced)
                br_fdb_unsync_static(br, p);
        list_del_rcu(&p->list);
        br_fdb_delete_by_port(br, p, 0, 1);
        nbp_update_port_count(br);
-err6:
        netdev_upper_dev_unlink(dev, br->dev);
 err5:
        dev->priv_flags &= ~IFF_BRIDGE_PORT;
@@ -729,6 +723,7 @@ err4:
 err3:
        sysfs_remove_link(br->ifobj, p->dev->name);
 err2:
+       br_multicast_del_port(p);
        kobject_put(&p->kobj);
        dev_set_allmulti(dev, -1);
 err1: