Message ID | 20221217011953.152487-3-kuba@kernel.org (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | devlink: remove the wait-for-references on unregister | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for net-next |
netdev/apply | fail | Patch does not apply to net-next |
Sat, Dec 17, 2022 at 02:19:45AM CET, kuba@kernel.org wrote: >devlink_pernet_pre_exit() is the only obvious place which takes >the instance lock without using the devl_ helpers. Update the code >and move the error print after releasing the reference >(having unlock and put together feels slightly idiomatic). To be prudent, this should be 2 patches as it changes 2 separate things. Anyway, Reviewed-by: Jiri Pirko <jiri@nvidia.com>
diff --git a/net/devlink/core.c b/net/devlink/core.c index 88c88b8053e2..d3b8336946fd 100644 --- a/net/devlink/core.c +++ b/net/devlink/core.c @@ -299,15 +299,16 @@ static void __net_exit devlink_pernet_pre_exit(struct net *net) */ devlinks_xa_for_each_registered_get(net, index, devlink) { WARN_ON(!(devlink->features & DEVLINK_F_RELOAD)); - mutex_lock(&devlink->lock); + devl_lock(devlink); err = devlink_reload(devlink, &init_net, DEVLINK_RELOAD_ACTION_DRIVER_REINIT, DEVLINK_RELOAD_LIMIT_UNSPEC, &actions_performed, NULL); - mutex_unlock(&devlink->lock); + devl_unlock(devlink); + devlink_put(devlink); + if (err && err != -EOPNOTSUPP) pr_warn("Failed to reload devlink instance into init_net\n"); - devlink_put(devlink); } }
devlink_pernet_pre_exit() is the only obvious place which takes the instance lock without using the devl_ helpers. Update the code and move the error print after releasing the reference (having unlock and put together feels slightly idiomatic). Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- net/devlink/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)