All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/4] disk: efi: Fix memory leak on 'gpt guid'
Date: Tue, 30 Apr 2019 19:56:17 +0200	[thread overview]
Message-ID: <78aa8cbf-54a1-6d58-4c8b-af5b34303e5d@gmx.de> (raw)
In-Reply-To: <20190430025347.3097-2-erosca@de.adit-jv.com>

On 4/30/19 4:53 AM, Eugeniu Rosca wrote:
> Below is what happens on R-Car H3ULCB-KF using clean U-Boot
> v2019.04-00810-g6aebc0d11a10 and r8a7795_ulcb_defconfig:
>
>   => ### interrupt autoboot
>   => gpt guid mmc 1
>   21200400-0804-0146-9dcc-a8c51255994f
>   success!
>   => ### keep calling 'gpt guid mmc 1'
>   => ### on 59th call, we are out of memory:
>   => gpt guid mmc 1
>   alloc_read_gpt_entries: ERROR: Can't allocate 0X4000 bytes for GPT Entries
>   GPT: Failed to allocate memory for PTE
>   get_disk_guid: *** ERROR: Invalid GPT ***
>   alloc_read_gpt_entries: ERROR: Can't allocate 0X4000 bytes for GPT Entries
>   GPT: Failed to allocate memory for PTE
>   get_disk_guid: *** ERROR: Invalid Backup GPT ***
>   error!
>
> After some inspection, it looks like get_disk_guid(), added via v2017.09
> commit 73d6d18b7147c9 ("GPT: add accessor function for disk GUID"),
> unlike other callers of is_gpt_valid(), doesn't free the memory pointed
> out by 'gpt_entry *gpt_pte'. The latter is allocated by is_gpt_valid()
> via alloc_read_gpt_entries().
>
> With the fix applied, the reproduction scenario has been run hundreds
> of times ('while true; do gpt guid mmc 1; done') w/o running into OOM.
>
> Fixes: 73d6d18b7147c9 ("GPT: add accessor function for disk GUID")
> Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

> ---
>   disk/part_efi.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index 239455b8161e..812d14cdd871 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -209,6 +209,8 @@ int get_disk_guid(struct blk_desc * dev_desc, char *guid)
>   	guid_bin = gpt_head->disk_guid.b;
>   	uuid_bin_to_str(guid_bin, guid, UUID_STR_FORMAT_GUID);
>
> +	/* Remember to free pte */
> +	free(gpt_pte);
>   	return 0;
>   }
>
>

  reply	other threads:[~2019-04-30 17:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-30  2:53 [U-Boot] [PATCH 0/4] Misc EFI/GPT/UUID fixes Eugeniu Rosca
2019-04-30  2:53 ` [U-Boot] [PATCH 1/4] disk: efi: Fix memory leak on 'gpt guid' Eugeniu Rosca
2019-04-30 17:56   ` Heinrich Schuchardt [this message]
2019-04-30  2:53 ` [U-Boot] [PATCH 2/4] disk: efi: Fix memory leak on 'gpt verify' Eugeniu Rosca
2019-04-30 18:01   ` Heinrich Schuchardt
2019-04-30  2:53 ` [U-Boot] [PATCH 3/4] cmd: gpt: fix and tidy up help message Eugeniu Rosca
2019-04-30 18:10   ` Heinrich Schuchardt
2019-04-30  2:53 ` [U-Boot] [PATCH 4/4] lib: uuid: Improve randomness of uuid values on RANDOM_UUID=y Eugeniu Rosca
2019-04-30 19:07   ` Heinrich Schuchardt
2019-05-01 19:08     ` Eugeniu Rosca
2019-05-01 19:51       ` Tom Rini
2019-05-01 22:32         ` Eugeniu Rosca
2019-05-03 16:09           ` Eugeniu Rosca
2019-05-07 12:25             ` Eugeniu Rosca
2019-05-16 15:13     ` Matthias Brugger
2019-05-16 15:54       ` Eugeniu Rosca

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=78aa8cbf-54a1-6d58-4c8b-af5b34303e5d@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.