From 1b4602e0391655a1dbf006953783fb9d6441dcd5 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 5 Sep 2018 11:27:48 +0800 Subject: [PATCH] gpt: free gpt_pte memory before we get a new one The memory leak will happen if there is a dev access switch, fix it by free the memory before we get a new one. Change-Id: I5d11609ab5b6cc37f2812d901f2427a1c83fd3a4 Signed-off-by: Kever Yang --- disk/part_efi.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/disk/part_efi.c b/disk/part_efi.c index f2454e28d3..bc5ce215f6 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -275,9 +275,15 @@ int part_get_info_efi(struct blk_desc *dev_desc, int part, if (!gpt_head) gpt_head = memalign(ARCH_DMA_MINALIGN, dev_desc->blksz); - /* We suppose different dev have different size, eg. emmc vs sd */ - if (gpt_head && (gpt_head->last_usable_lba + 0x22) != dev_desc->lba) + /* + * We suppose different dev have different size, eg. emmc vs sd + * free the pte first if exist and then will malloc and init a new one. + */ + if (gpt_head && (gpt_head->last_usable_lba + 0x22) != dev_desc->lba) { + if (gpt_pte) + free(gpt_pte); gpt_pte = NULL; + } /* "part" argument must be at least 1 */ if (part < 1) {