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

ipv6: add net device refcount tracker to struct inet6_dev

parent f77159a3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -160,6 +160,7 @@ struct ipv6_devstat {

struct inet6_dev {
	struct net_device	*dev;
	netdevice_tracker	dev_tracker;

	struct list_head	addr_list;

+2 −2
Original line number Diff line number Diff line
@@ -405,13 +405,13 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev)
	if (ndev->cnf.forwarding)
		dev_disable_lro(dev);
	/* We refer to the device */
	dev_hold(dev);
	dev_hold_track(dev, &ndev->dev_tracker, GFP_KERNEL);

	if (snmp6_alloc_dev(ndev) < 0) {
		netdev_dbg(dev, "%s: cannot allocate memory for statistics\n",
			   __func__);
		neigh_parms_release(&nd_tbl, ndev->nd_parms);
		dev_put(dev);
		dev_put_track(dev, &ndev->dev_tracker);
		kfree(ndev);
		return ERR_PTR(err);
	}
+1 −1
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
#ifdef NET_REFCNT_DEBUG
	pr_debug("%s: %s\n", __func__, dev ? dev->name : "NIL");
#endif
	dev_put(dev);
	dev_put_track(dev, &idev->dev_tracker);
	if (!idev->dead) {
		pr_warn("Freeing alive inet6 device %p\n", idev);
		return;