Re: [PATCH] thermal/lib: Fix memory leak on error in thermal_genl_auto()

From: Markus Elfring
Date: Thu Oct 24 2024 - 08:08:48 EST


> The function thermal_genl_auto() does not free the allocated message
> in the error path. Fix that by putting a out label and jump to it
> which will free the message instead of directly returning an error.

Would you like to add any tags (like “Fixes” and “Cc”) accordingly?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.12-rc4#n145



> +++ b/tools/lib/thermal/commands.c
> @@ -375,27 +375,30 @@ static thermal_error_t thermal_genl_auto(struct thermal_handler *th, cmd_cb_t cm
> struct cmd_param *param,
> int cmd, int flags, void *arg)
> {
> + thermal_error_t ret = THERMAL_ERROR;
> struct nl_msg *msg;
> void *hdr;
>
> msg = nlmsg_alloc();
> if (!msg)
> - return THERMAL_ERROR;
> + goto out;


Is it really reasonable to pass a null pointer (from a failed function call)
to a subsequent nlmsg_free() call?

Can it be more appropriate to return directly in such an error case?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?h=v6.12-rc4#n532

Regards,
Markus