mirror of
https://github.com/apache/nuttx.git
synced 2025-12-13 06:14:40 +08:00
binfmt: Fix memory leak in ELF loader
Summary: - I noticed that the hello (ELF) application causes a memory leak. - Finally, I found that the data section is not deallocated. - This commit fixes this issue. Impact: - ELF loader with CONFIG_ARCH_ADDRENV=n Testing: - Tested with the following configs - sprensense:elf, esp32-devkitc:elf, sabre-6quad:elf - spresense:wifi_smp, rv-virt:nsh64, sabre-6quad:netnsh Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
committed by
Xiang Xiao
parent
79952163c1
commit
0cef7b765e
@@ -167,10 +167,15 @@ int unload_module(FAR struct binary_s *binp)
|
|||||||
{
|
{
|
||||||
binfo("Freeing alloc[%d]: %p\n", i, binp->alloc[i]);
|
binfo("Freeing alloc[%d]: %p\n", i, binp->alloc[i]);
|
||||||
#if defined(CONFIG_ARCH_USE_TEXT_HEAP)
|
#if defined(CONFIG_ARCH_USE_TEXT_HEAP)
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
up_textheap_free((FAR void *)binp->alloc[i]);
|
up_textheap_free((FAR void *)binp->alloc[i]);
|
||||||
#else
|
}
|
||||||
kumm_free((FAR void *)binp->alloc[i]);
|
else
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
|
kumm_free((FAR void *)binp->alloc[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -277,9 +277,10 @@ static int elf_loadbinary(FAR struct binary_s *binp,
|
|||||||
up_addrenv_clone(&loadinfo.addrenv, &binp->addrenv);
|
up_addrenv_clone(&loadinfo.addrenv, &binp->addrenv);
|
||||||
#else
|
#else
|
||||||
binp->alloc[0] = (FAR void *)loadinfo.textalloc;
|
binp->alloc[0] = (FAR void *)loadinfo.textalloc;
|
||||||
|
binp->alloc[1] = (FAR void *)loadinfo.dataalloc;
|
||||||
#ifdef CONFIG_BINFMT_CONSTRUCTORS
|
#ifdef CONFIG_BINFMT_CONSTRUCTORS
|
||||||
binp->alloc[1] = loadinfo.ctoralloc;
|
binp->alloc[2] = loadinfo.ctoralloc;
|
||||||
binp->alloc[2] = loadinfo.dtoralloc;
|
binp->alloc[3] = loadinfo.dtoralloc;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#define BINFMT_NALLOC 3
|
#define BINFMT_NALLOC 4
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
|
|||||||
Reference in New Issue
Block a user