Message ID | 1675698976-45993-1-git-send-email-moshe@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | cb6b2e11a42decea2afc77df73ec7326db1ac25f |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] devlink: Fix memleak in health diagnose callback | expand |
On Mon, Feb 06, 2023 at 05:56:16PM +0200, Moshe Shemesh wrote: > The callback devlink_nl_cmd_health_reporter_diagnose_doit() miss > devlink_fmsg_free(), which leads to memory leak. > > Fix it by adding devlink_fmsg_free(). > > Fixes: e994a75fb7f9 ("devlink: remove reporter reference counting") > Signed-off-by: Moshe Shemesh <moshe@nvidia.com> > Reviewed-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
Hello: This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Mon, 6 Feb 2023 17:56:16 +0200 you wrote: > The callback devlink_nl_cmd_health_reporter_diagnose_doit() miss > devlink_fmsg_free(), which leads to memory leak. > > Fix it by adding devlink_fmsg_free(). > > Fixes: e994a75fb7f9 ("devlink: remove reporter reference counting") > Signed-off-by: Moshe Shemesh <moshe@nvidia.com> > Reviewed-by: Jiri Pirko <jiri@nvidia.com> > > [...] Here is the summary with links: - [net-next] devlink: Fix memleak in health diagnose callback https://git.kernel.org/netdev/net-next/c/cb6b2e11a42d You are awesome, thank you!
diff --git a/net/devlink/leftover.c b/net/devlink/leftover.c index 056d9ca14a3d..79bb8320fc3a 100644 --- a/net/devlink/leftover.c +++ b/net/devlink/leftover.c @@ -7866,18 +7866,22 @@ static int devlink_nl_cmd_health_reporter_diagnose_doit(struct sk_buff *skb, err = devlink_fmsg_obj_nest_start(fmsg); if (err) - return err; + goto out; err = reporter->ops->diagnose(reporter, fmsg, info->extack); if (err) - return err; + goto out; err = devlink_fmsg_obj_nest_end(fmsg); if (err) - return err; + goto out; + + err = devlink_fmsg_snd(fmsg, info, + DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, 0); - return devlink_fmsg_snd(fmsg, info, - DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, 0); +out: + devlink_fmsg_free(fmsg); + return err; } static int