binfmt/, binfmt/libelf: binfmt/elf: Call umm_initialize as soon as possible otherwise elf_loadctors/elf_loaddtors will fail to allocate memory.

This commit is contained in:
Xiang Xiao 2019-01-26 11:36:38 -06:00 committed by Gregory Nutt
parent 0edcd6b85e
commit b7f958a02e
2 changed files with 6 additions and 6 deletions

View File

@ -164,11 +164,6 @@ int exec_module(FAR const struct binary_s *binp)
berr("ERROR: up_addrenv_select() failed: %d\n", ret);
goto errout_with_tcb;
}
/* Initialize the user heap */
umm_initialize((FAR void *)CONFIG_ARCH_HEAP_VBASE,
up_addrenv_heapsize(&binp->addrenv));
#endif
/* Allocate the stack for the new task.

View File

@ -277,7 +277,7 @@ int elf_load(FAR struct elf_loadinfo_s *loadinfo)
#elif defined(CONFIG_ARCH_STACK_DYNAMIC)
heapsize = ARCH_HEAP_SIZE;
#else
heapsize = MIN(ARCH_HEAP_SIZE, CONFIG_ELF_STACKSIZE);
heapsize = MAX(ARCH_HEAP_SIZE, CONFIG_ELF_STACKSIZE);
#endif
/* Allocate (and zero) memory for the ELF file. */
@ -301,6 +301,11 @@ int elf_load(FAR struct elf_loadinfo_s *loadinfo)
berr("ERROR: elf_addrenv_select() failed: %d\n", ret);
goto errout_with_buffers;
}
/* Initialize the user heap */
umm_initialize((FAR void *)CONFIG_ARCH_HEAP_VBASE,
up_addrenv_heapsize(&loadinfo->addrenv));
#endif
/* Load ELF section data into memory */