From: Jiri Pirko <jiri@nvidia.com> Date: Fri, 13 Oct 2023 12:10:25 +0000 (+0200) Subject: devlink: take device reference for devlink object X-Git-Tag: v6.7-rc1~160^2~104^2~4 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a380687200e0;p=users%2Fdwmw2%2Flinux.git 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> --- diff --git a/net/devlink/core.c b/net/devlink/core.c index bcbbb952569f5..c47c9e6c744fe 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);