forked from Minki/linux
ipv4: add net device refcount tracker to struct in_device
Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
8c727003c4
commit
c04438f58d
@ -24,6 +24,8 @@ struct ipv4_devconf {
|
||||
|
||||
struct in_device {
|
||||
struct net_device *dev;
|
||||
netdevice_tracker dev_tracker;
|
||||
|
||||
refcount_t refcnt;
|
||||
int dead;
|
||||
struct in_ifaddr __rcu *ifa_list;/* IP ifaddr chain */
|
||||
|
@ -243,7 +243,7 @@ void in_dev_finish_destroy(struct in_device *idev)
|
||||
#ifdef NET_REFCNT_DEBUG
|
||||
pr_debug("%s: %p=%s\n", __func__, idev, dev ? dev->name : "NIL");
|
||||
#endif
|
||||
dev_put(dev);
|
||||
dev_put_track(dev, &idev->dev_tracker);
|
||||
if (!idev->dead)
|
||||
pr_err("Freeing alive in_device %p\n", idev);
|
||||
else
|
||||
@ -271,7 +271,7 @@ static struct in_device *inetdev_init(struct net_device *dev)
|
||||
if (IPV4_DEVCONF(in_dev->cnf, FORWARDING))
|
||||
dev_disable_lro(dev);
|
||||
/* Reference in_dev->dev */
|
||||
dev_hold(dev);
|
||||
dev_hold_track(dev, &in_dev->dev_tracker, GFP_KERNEL);
|
||||
/* Account for reference dev->ip_ptr (below) */
|
||||
refcount_set(&in_dev->refcnt, 1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user