net: bridge: add net device refcount tracker
Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
19c9ebf6ed
commit
b2dcdc7f73
2 changed files with 4 additions and 3 deletions
|
@ -274,7 +274,7 @@ static void destroy_nbp(struct net_bridge_port *p)
|
||||||
|
|
||||||
p->br = NULL;
|
p->br = NULL;
|
||||||
p->dev = NULL;
|
p->dev = NULL;
|
||||||
dev_put(dev);
|
dev_put_track(dev, &p->dev_tracker);
|
||||||
|
|
||||||
kobject_put(&p->kobj);
|
kobject_put(&p->kobj);
|
||||||
}
|
}
|
||||||
|
@ -423,7 +423,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
p->br = br;
|
p->br = br;
|
||||||
dev_hold(dev);
|
dev_hold_track(dev, &p->dev_tracker, GFP_KERNEL);
|
||||||
p->dev = dev;
|
p->dev = dev;
|
||||||
p->path_cost = port_cost(dev);
|
p->path_cost = port_cost(dev);
|
||||||
p->priority = 0x8000 >> BR_PORT_BITS;
|
p->priority = 0x8000 >> BR_PORT_BITS;
|
||||||
|
@ -434,7 +434,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
|
||||||
br_stp_port_timer_init(p);
|
br_stp_port_timer_init(p);
|
||||||
err = br_multicast_add_port(p);
|
err = br_multicast_add_port(p);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_put(dev);
|
dev_put_track(dev, &p->dev_tracker);
|
||||||
kfree(p);
|
kfree(p);
|
||||||
p = ERR_PTR(err);
|
p = ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,6 +344,7 @@ struct net_bridge_mdb_entry {
|
||||||
struct net_bridge_port {
|
struct net_bridge_port {
|
||||||
struct net_bridge *br;
|
struct net_bridge *br;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
|
netdevice_tracker dev_tracker;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
Loading…
Add table
Reference in a new issue