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

vlan: add net device refcount tracker

parent 08f0b22d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ struct netpoll;
 *	@vlan_id: VLAN identifier
 *	@flags: device flags
 *	@real_dev: underlying netdevice
 *	@dev_tracker: refcount tracker for @real_dev reference
 *	@real_dev_addr: address of underlying netdevice
 *	@dent: proc dir entry
 *	@vlan_pcpu_stats: ptr to percpu rx stats
@@ -177,6 +178,8 @@ struct vlan_dev_priv {
	u16					flags;

	struct net_device			*real_dev;
	netdevice_tracker			dev_tracker;

	unsigned char				real_dev_addr[ETH_ALEN];

	struct proc_dir_entry			*dent;
+2 −2
Original line number Diff line number Diff line
@@ -616,7 +616,7 @@ static int vlan_dev_init(struct net_device *dev)
		return -ENOMEM;

	/* Get vlan's reference to real_dev */
	dev_hold(real_dev);
	dev_hold_track(real_dev, &vlan->dev_tracker, GFP_KERNEL);

	return 0;
}
@@ -848,7 +848,7 @@ static void vlan_dev_free(struct net_device *dev)
	vlan->vlan_pcpu_stats = NULL;

	/* Get rid of the vlan's reference to real_dev */
	dev_put(vlan->real_dev);
	dev_put_track(vlan->real_dev, &vlan->dev_tracker);
}

void vlan_setup(struct net_device *dev)