Commit c04438f5 authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski
Browse files

ipv4: add net device refcount tracker to struct in_device

parent 8c727003
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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		*/
+2 −2
Original line number Diff line number Diff line
@@ -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);