History

net: bridge: add net device refcount tracker

Eric Dumazet committed 4 years ago

Commit b2dcdc71 parent 19c9ebf2 files · +4 −3Browse files

Unified · Split

2 files
  1. net/bridge/br_if.c +3 −3
  2. net/bridge/br_private.h +1 −0
net/bridge/br_if.c+3−3
@@ -274,7 +274,7 @@ static void destroy_nbp(struct net_bridge_port *p) · 273 unmodified lines
274 274
275 p->br = NULL;275 p->br = NULL;
276 p->dev = NULL;276 p->dev = NULL;
277 dev_put(dev);277 dev_put_track(dev, &p->dev_tracker);
278 278
279 kobject_put(&p->kobj);279 kobject_put(&p->kobj);
280}280}
@@ -423,7 +423,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br, · 142 unmodified lines
423 return ERR_PTR(-ENOMEM);423 return ERR_PTR(-ENOMEM);
424 424
425 p->br = br;425 p->br = br;
426 dev_hold(dev);426 dev_hold_track(dev, &p->dev_tracker, GFP_KERNEL);
427 p->dev = dev;427 p->dev = dev;
428 p->path_cost = port_cost(dev);428 p->path_cost = port_cost(dev);
429 p->priority = 0x8000 >> BR_PORT_BITS;429 p->priority = 0x8000 >> BR_PORT_BITS;
@@ -434,7 +434,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br, · 4 unmodified lines
434 br_stp_port_timer_init(p);434 br_stp_port_timer_init(p);
435 err = br_multicast_add_port(p);435 err = br_multicast_add_port(p);
436 if (err) {436 if (err) {
437 dev_put(dev);437 dev_put_track(dev, &p->dev_tracker);
438 kfree(p);438 kfree(p);
439 p = ERR_PTR(err);439 p = ERR_PTR(err);
440 }440 }
net/bridge/br_private.h+1−0
@@ -344,6 +344,7 @@ struct net_bridge_mdb_entry { · 343 unmodified lines
344struct net_bridge_port {344struct net_bridge_port {
345 struct net_bridge *br;345 struct net_bridge *br;
346 struct net_device *dev;346 struct net_device *dev;
347 netdevice_tracker dev_tracker;
347 struct list_head list;348 struct list_head list;
348 349
349 unsigned long flags;350 unsigned long flags;