sandbox: ensure that state->ram_buf is in low memory

Addresses in state->ram_buf must be in the low 4 GiB of the address space.
Otherwise we cannot correctly fill SMBIOS tables. This shows up in warnings
like:

    WARNING: SMBIOS table_address overflow 7f752735e020

Ensure that state->ram_buf is initialized by the first invocation of
os_malloc().

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heinrich Schuchardt 2021-05-11 21:03:16 +02:00 committed by Simon Glass
parent b953ec2bca
commit 3beba4ad34

View file

@ -453,6 +453,14 @@ int main(int argc, char *argv[])
text_base = os_find_text_base();
/*
* This must be the first invocation of os_malloc() to have
* state->ram_buf in the low 4 GiB.
*/
ret = state_init();
if (ret)
goto err;
/*
* Copy argv[] so that we can pass the arguments in the original
* sequence when resetting the sandbox.
@ -467,10 +475,6 @@ int main(int argc, char *argv[])
gd = &data;
gd->arch.text_base = text_base;
ret = state_init();
if (ret)
goto err;
state = state_get_current();
if (os_parse_args(state, argc, argv))
return 1;