Merge branch 'linus' into x86/urgent, to pick up dependent changes
[platform/kernel/linux-rpi.git] / net / bridge / br_if.c
index 41f0a69..6d4a24a 100644 (file)
@@ -179,7 +179,7 @@ int nbp_backup_change(struct net_bridge_port *p,
        ASSERT_RTNL();
 
        if (backup_dev) {
-               if (!br_port_exists(backup_dev))
+               if (!netif_is_bridge_port(backup_dev))
                        return -ENOENT;
 
                backup_p = br_port_get_rtnl(backup_dev);
@@ -602,13 +602,15 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
        call_netdevice_notifiers(NETDEV_JOIN, dev);
 
        err = dev_set_allmulti(dev, 1);
-       if (err)
-               goto put_back;
+       if (err) {
+               kfree(p);       /* kobject not yet init'd, manually free */
+               goto err1;
+       }
 
        err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj),
                                   SYSFS_BRIDGE_PORT_ATTR);
        if (err)
-               goto err1;
+               goto err2;
 
        err = br_sysfs_addif(p);
        if (err)
@@ -700,12 +702,9 @@ err3:
        sysfs_remove_link(br->ifobj, p->dev->name);
 err2:
        kobject_put(&p->kobj);
-       p = NULL; /* kobject_put frees */
-err1:
        dev_set_allmulti(dev, -1);
-put_back:
+err1:
        dev_put(dev);
-       kfree(p);
        return err;
 }