Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 266404
b: refs/heads/master
c: 77f9859
h: refs/heads/master
v: v3
  • Loading branch information
stephen hemminger authored and David S. Miller committed Oct 3, 2011
1 parent fc6b91b commit 7741aeb
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3de09455cfcde1898fb435ad425b9ad5d13ed362
refs/heads/master: 77f9859837cbe262ef2aa12fc38d18458814c2ca
15 changes: 7 additions & 8 deletions trunk/net/bridge/br_if.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/netpoll.h>
#include <linux/ethtool.h>
#include <linux/if_arp.h>
Expand Down Expand Up @@ -322,7 +323,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)

/* Don't allow bridging non-ethernet like devices */
if ((dev->flags & IFF_LOOPBACK) ||
dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN)
dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN ||
!is_valid_ether_addr(dev->dev_addr))
return -EINVAL;

/* No bridging of bridges */
Expand All @@ -349,10 +351,6 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)

err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj),
SYSFS_BRIDGE_PORT_ATTR);
if (err)
goto err0;

err = br_fdb_insert(br, p, dev->dev_addr);
if (err)
goto err1;

Expand Down Expand Up @@ -394,6 +392,9 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)

dev_set_mtu(br->dev, br_min_mtu(br));

if (br_fdb_insert(br, p, dev->dev_addr))
netdev_err(dev, "failed insert local address bridge forwarding table\n");

kobject_uevent(&p->kobj, KOBJ_ADD);

return 0;
Expand All @@ -403,11 +404,9 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
err3:
sysfs_remove_link(br->ifobj, p->dev->name);
err2:
br_fdb_delete_by_port(br, p, 1);
err1:
kobject_put(&p->kobj);
p = NULL; /* kobject_put frees */
err0:
err1:
dev_set_promiscuity(dev, -1);
put_back:
dev_put(dev);
Expand Down

0 comments on commit 7741aeb

Please sign in to comment.