[PATCH 8/8] efi: Avoid a memory leak in efi_bind_block() on error path
Heinrich Schuchardt
xypron.glpk at gmx.de
Tue Dec 10 09:10:06 CET 2024
On 09.12.24 17:28, Simon Glass wrote:
> Free the memory used if an error occurs.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Suggested-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
>
> lib/efi/efi_app_init.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/lib/efi/efi_app_init.c b/lib/efi/efi_app_init.c
> index cc91e1d74b8..fec3f348cfb 100644
> --- a/lib/efi/efi_app_init.c
> +++ b/lib/efi/efi_app_init.c
> @@ -60,8 +60,10 @@ int efi_bind_block(efi_handle_t handle, struct efi_block_io *blkio,
> plat->handle = handle;
> plat->blkio = blkio;
> plat->device_path = malloc(device_path_len);
> - if (!plat->device_path)
> + if (!plat->device_path) {
> + free(plat);
As of origin master origin/next (9dd0a9ecaa539ad) plat is a local
variable and not a pointer. You cannot free it.
If there is some prerequisite patch that is making plat a pointer, you
should add this correction to that patch.
Best regards
Heinrich
> return log_msg_ret("path", -ENOMEM);
> + }
> memcpy(plat->device_path, device_path, device_path_len);
> ret = device_bind(dm_root(), DM_DRIVER_GET(efi_media), "efi_media",
> plat, ofnode_null(), &dev);
More information about the U-Boot
mailing list