aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r--net/bridge/br_device.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 2c8095a5d824..8eecd0ec22f2 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -104,8 +104,16 @@ static int br_dev_init(struct net_device *dev)
104 return -ENOMEM; 104 return -ENOMEM;
105 105
106 err = br_vlan_init(br); 106 err = br_vlan_init(br);
107 if (err) 107 if (err) {
108 free_percpu(br->stats); 108 free_percpu(br->stats);
109 return err;
110 }
111
112 err = br_multicast_init_stats(br);
113 if (err) {
114 free_percpu(br->stats);
115 br_vlan_flush(br);
116 }
109 br_set_lockdep_class(dev); 117 br_set_lockdep_class(dev);
110 118
111 return err; 119 return err;
@@ -341,6 +349,8 @@ static const struct net_device_ops br_netdev_ops = {
341 .ndo_add_slave = br_add_slave, 349 .ndo_add_slave = br_add_slave,
342 .ndo_del_slave = br_del_slave, 350 .ndo_del_slave = br_del_slave,
343 .ndo_fix_features = br_fix_features, 351 .ndo_fix_features = br_fix_features,
352 .ndo_neigh_construct = netdev_default_l2upper_neigh_construct,
353 .ndo_neigh_destroy = netdev_default_l2upper_neigh_destroy,
344 .ndo_fdb_add = br_fdb_add, 354 .ndo_fdb_add = br_fdb_add,
345 .ndo_fdb_del = br_fdb_delete, 355 .ndo_fdb_del = br_fdb_delete,
346 .ndo_fdb_dump = br_fdb_dump, 356 .ndo_fdb_dump = br_fdb_dump,