[PATCH v3 1/2] efi_selftest: free handles on teardown()
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Jul 12 07:26:32 CEST 2026
On 6/26/26 16:47, Vincent Stehlé wrote:
> In the block device selftest, make the handles pointer global and free it
> also in teardown(), to simplify error handling.
>
> We also need to nullify the pointer after freeing it on the normal path,
> to avoid freeing it a second time during teardown().
>
> Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
> ---
> lib/efi_selftest/efi_selftest_block_device.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c
> index 9c4be834eeb..b5f6f9353cd 100644
> --- a/lib/efi_selftest/efi_selftest_block_device.c
> +++ b/lib/efi_selftest/efi_selftest_block_device.c
> @@ -58,6 +58,9 @@ static const struct compressed_disk_image img = EFI_ST_DISK_IMG;
> /* Decompressed disk image */
> static u8 *image;
>
> +/* Handles buffer */
> +static efi_handle_t *handles;
> +
> /*
> * Reset service of the block IO protocol.
> *
> @@ -276,6 +279,15 @@ static int teardown(void)
> return EFI_ST_FAILURE;
> }
> }
> +
> + if (handles) {
> + r = boottime->free_pool(handles);
> + if (r != EFI_SUCCESS) {
> + efi_st_error("Failed to free handles\n");
> + return EFI_ST_FAILURE;
> + }
> + }
> +
> return r;
> }
>
> @@ -303,7 +315,6 @@ static int execute(void)
> {
> efi_status_t ret;
> efi_uintn_t no_handles, i, len;
> - efi_handle_t *handles;
> efi_handle_t handle_partition = NULL;
> struct efi_device_path *dp_partition;
> struct efi_block_io *block_io_protocol;
> @@ -372,6 +383,7 @@ static int execute(void)
> break;
> }
> ret = boottime->free_pool(handles);
> + handles = NULL; /* Avoid double free on teardown(). */
Thank you for fixing the memory leak.
handles is a static variable. Why do you explicitly set it to NULL?
Best regards
Heinrich
> if (ret != EFI_SUCCESS) {
> efi_st_error("Failed to free pool memory\n");
> return EFI_ST_FAILURE;
>
More information about the U-Boot
mailing list