diff options
author | Jiri Pirko <jiri@nvidia.com> | 2023-10-13 14:10:25 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-10-18 09:23:01 +0100 |
commit | a380687200e0f7f0e00d745796fd8b8ea4bcb746 (patch) | |
tree | 517100bbf98f84c5c7239677a70f0ce5b0288204 | |
parent | c503bc7df602257e9d03851654a347649a33f3c3 (diff) |
devlink: take device reference for devlink object
In preparation to allow to access device pointer without devlink
instance lock held, make sure the device pointer is usable until
devlink_release() is called.
Fixes: c137743bce02 ("devlink: introduce object and nested devlink relationship infra")
Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/devlink/core.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/devlink/core.c b/net/devlink/core.c index bcbbb952569f..c47c9e6c744f 100644 --- a/net/devlink/core.c +++ b/net/devlink/core.c @@ -310,6 +310,7 @@ static void devlink_release(struct work_struct *work) mutex_destroy(&devlink->lock); lockdep_unregister_key(&devlink->lock_key); + put_device(devlink->dev); kfree(devlink); } @@ -425,7 +426,7 @@ struct devlink *devlink_alloc_ns(const struct devlink_ops *ops, if (ret < 0) goto err_xa_alloc; - devlink->dev = dev; + devlink->dev = get_device(dev); devlink->ops = ops; xa_init_flags(&devlink->ports, XA_FLAGS_ALLOC); xa_init_flags(&devlink->params, XA_FLAGS_ALLOC); |