net/sched: add net device refcount tracker to struct Qdisc
Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c04438f58d
commit
606509f27f
@ -125,7 +125,7 @@ struct Qdisc {
|
||||
spinlock_t seqlock;
|
||||
|
||||
struct rcu_head rcu;
|
||||
|
||||
netdevice_tracker dev_tracker;
|
||||
/* private data */
|
||||
long privdata[] ____cacheline_aligned;
|
||||
};
|
||||
|
@ -973,7 +973,7 @@ struct Qdisc *qdisc_alloc(struct netdev_queue *dev_queue,
|
||||
sch->enqueue = ops->enqueue;
|
||||
sch->dequeue = ops->dequeue;
|
||||
sch->dev_queue = dev_queue;
|
||||
dev_hold(dev);
|
||||
dev_hold_track(dev, &sch->dev_tracker, GFP_KERNEL);
|
||||
refcount_set(&sch->refcnt, 1);
|
||||
|
||||
return sch;
|
||||
@ -1073,7 +1073,7 @@ static void qdisc_destroy(struct Qdisc *qdisc)
|
||||
ops->destroy(qdisc);
|
||||
|
||||
module_put(ops->owner);
|
||||
dev_put(qdisc_dev(qdisc));
|
||||
dev_put_track(qdisc_dev(qdisc), &qdisc->dev_tracker);
|
||||
|
||||
trace_qdisc_destroy(qdisc);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user