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
274274
275275 p->br = NULL;
276276 p->dev = NULL;
277− dev_put(dev);
277+ dev_put_track(dev, &p->dev_tracker);
278278
279279 kobject_put(&p->kobj);
280280 }
@@ -423,7 +423,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br, · 142 unmodified lines
423423 return ERR_PTR(-ENOMEM);
424424
425425 p->br = br;
426− dev_hold(dev);
426+ dev_hold_track(dev, &p->dev_tracker, GFP_KERNEL);
427427 p->dev = dev;
428428 p->path_cost = port_cost(dev);
429429 p->priority = 0x8000 >> BR_PORT_BITS;
@@ -434,7 +434,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br, · 4 unmodified lines
434434 br_stp_port_timer_init(p);
435435 err = br_multicast_add_port(p);
436436 if (err) {
437− dev_put(dev);
437+ dev_put_track(dev, &p->dev_tracker);
438438 kfree(p);
439439 p = ERR_PTR(err);
440440 }
net/bridge/br_private.h+1−0
@@ -344,6 +344,7 @@ struct net_bridge_mdb_entry { · 343 unmodified lines
344344 struct net_bridge_port {
345345 struct net_bridge *br;
346346 struct net_device *dev;
347+ netdevice_tracker dev_tracker;
347348 struct list_head list;
348349
349350 unsigned long flags;