summaryrefslogtreecommitdiff
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2023-06-15 08:21:12 +0100
committerDavid S. Miller <davem@davemloft.net>2023-06-15 08:21:12 +0100
commit473f5e13b38b9533bd3ae0758418581eabf69b50 (patch)
tree498f35c9dae873ea7cba0949b2dc350e3b8d189a /net/core/netpoll.c
parent89da780aa4c7667c8b1a144959206262aebdeabe (diff)
parent48eed027d310326052655c5ac14588855663087b (diff)
Merge branch 'netdev-tracking'
Jakub Kicinski says: ==================== net: create device lookup API with reference tracking We still see dev_hold() / dev_put() calls without reference tracker getting added in new code. dev_get_by_name() / dev_get_by_index() seem to be one of the sources of those. Provide appropriate helpers. Allocating the tracker can obviously be done with an additional call to netdev_tracker_alloc(), but a single API feels cleaner. v2: - fix a dev_put() in ethtool v1: https://lore.kernel.org/all/20230609183207.1466075-1-kuba@kernel.org/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index e6a739b1afa9e..543007f159f99 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -690,7 +690,7 @@ int netpoll_setup(struct netpoll *np)
err = -ENODEV;
goto unlock;
}
- dev_hold(ndev);
+ netdev_hold(ndev, &np->dev_tracker, GFP_KERNEL);
if (netdev_master_upper_dev_get(ndev)) {
np_err(np, "%s is a slave device, aborting\n", np->dev_name);
@@ -783,12 +783,11 @@ put_noaddr:
err = __netpoll_setup(np, ndev);
if (err)
goto put;
- netdev_tracker_alloc(ndev, &np->dev_tracker, GFP_KERNEL);
rtnl_unlock();
return 0;
put:
- dev_put(ndev);
+ netdev_put(ndev, &np->dev_tracker);
unlock:
rtnl_unlock();
return err;