Commit adc76fc9 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-second-round-of-netdevice-refcount-tracking'

Eric Dumazet says:

====================
net: second round of netdevice refcount tracking

The most interesting part of this series is probably
("inet: add net device refcount tracker to struct fib_nh_common")
but only future reports will confirm this guess.
====================

Link: https://lore.kernel.org/r/20211207013039.1868645-1-eric.dumazet@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 59d58d93 ada066b2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave)
	list_del(&slave->list);
	queue->num_slaves--;
	slave->dev->flags &= ~IFF_SLAVE;
	dev_put(slave->dev);
	dev_put_track(slave->dev, &slave->dev_tracker);
	kfree(slave);
}

@@ -399,7 +399,7 @@ static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave)
		if (duplicate_slave)
			eql_kill_one_slave(queue, duplicate_slave);

		dev_hold(slave->dev);
		dev_hold_track(slave->dev, &slave->dev_tracker, GFP_ATOMIC);
		list_add(&slave->list, &queue->all_slaves);
		queue->num_slaves++;
		slave->dev->flags |= IFF_SLAVE;
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
typedef struct slave {
	struct list_head	list;
	struct net_device	*dev;
	netdevice_tracker	dev_tracker;
	long			priority;
	long			priority_bps;
	long			priority_Bps;
+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 −0
Original line number Diff line number Diff line
@@ -1951,6 +1951,7 @@ enum netdev_ml_priv_type {
 *
 *	@dev_addr_shadow:	Copy of @dev_addr to catch direct writes.
 *	@linkwatch_dev_tracker:	refcount tracker used by linkwatch.
 *	@watchdog_dev_tracker:	refcount tracker used by watchdog.
 *
 *	FIXME: cleanup struct net_device such that network protocol info
 *	moves out.
@@ -2282,6 +2283,7 @@ struct net_device {

	u8 dev_addr_shadow[MAX_ADDR_LEN];
	netdevice_tracker	linkwatch_dev_tracker;
	netdevice_tracker	watchdog_dev_tracker;
};
#define to_net_dev(d) container_of(d, struct net_device, dev)

+3 −0
Original line number Diff line number Diff line
@@ -229,7 +229,10 @@ struct ctl_table;

typedef struct ax25_dev {
	struct ax25_dev		*next;

	struct net_device	*dev;
	netdevice_tracker	dev_tracker;

	struct net_device	*forward;
	struct ctl_table_header *sysheader;
	int			values[AX25_MAX_VALUES];
Loading