mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-14 18:45:18 -04:00
mlxsw: spectrum_router: IPv6 events: Use tracker helpers to hold & put netdevices
Using the tracking helpers makes it easier to debug netdevice refcount imbalances when CONFIG_NET_DEV_REFCNT_TRACKER is enabled. Convert dev_hold() / dev_put() to netdev_hold() / netdev_put() in the router code that deals with IPv6 address events. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://lore.kernel.org/r/f0af6ad4722b4ca6e598fd4fda8311a3041651ec.1690471775.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
d0e0e88012
commit
cb21162041
@@ -9333,6 +9333,7 @@ struct mlxsw_sp_inet6addr_event_work {
|
||||
struct work_struct work;
|
||||
struct mlxsw_sp *mlxsw_sp;
|
||||
struct net_device *dev;
|
||||
netdevice_tracker dev_tracker;
|
||||
unsigned long event;
|
||||
};
|
||||
|
||||
@@ -9356,7 +9357,7 @@ static void mlxsw_sp_inet6addr_event_work(struct work_struct *work)
|
||||
out:
|
||||
mutex_unlock(&mlxsw_sp->router->lock);
|
||||
rtnl_unlock();
|
||||
dev_put(dev);
|
||||
netdev_put(dev, &inet6addr_work->dev_tracker);
|
||||
kfree(inet6addr_work);
|
||||
}
|
||||
|
||||
@@ -9382,7 +9383,7 @@ static int mlxsw_sp_inet6addr_event(struct notifier_block *nb,
|
||||
inet6addr_work->mlxsw_sp = router->mlxsw_sp;
|
||||
inet6addr_work->dev = dev;
|
||||
inet6addr_work->event = event;
|
||||
dev_hold(dev);
|
||||
netdev_hold(dev, &inet6addr_work->dev_tracker, GFP_ATOMIC);
|
||||
mlxsw_core_schedule_work(&inet6addr_work->work);
|
||||
|
||||
return NOTIFY_DONE;
|
||||
|
||||
Reference in New Issue
Block a user