[BUG] WARNING: SMBIOS table_address overflow 7f752735e020

Hello Simon,
with sandbox_defconfig and 'bootefi hello' I see a message
WARNING: SMBIOS table_address overflow 7f752735e020
The problem is caused by mmap() being passed the same value 0x10000000 on each call. Only the first call will give you a low address.
It is this call where we need a low address:
state->ram_buf = os_malloc(state->ram_size);
But before that we call
arch/sandbox/cpu/start.c:447 os_argv = os_malloc(size);
due to your patch b308d9fd18fa ("sandbox: Avoid using malloc() for system state").
I suggest to move state_init() to the top of the function main().
Why are we using both 'return 1' and 'os_exit(1)' in main? Can't we just use on of them?
--- a/arch/sandbox/cpu/start.c +++ b/arch/sandbox/cpu/start.c @@ -439,6 +439,10 @@ int main(int argc, char *argv[]) int size; int ret;
+ ret = state_init(); + if (ret) + goto err; + /* * Copy argv[] so that we can pass the arguments in the original * sequence when resetting the sandbox. @@ -453,10 +457,6 @@ int main(int argc, char *argv[]) gd = &data; gd->arch.text_base = os_find_text_base();
- ret = state_init(); - if (ret) - goto err; - state = state_get_current(); if (os_parse_args(state, argc, argv)) return 1;
Best regards
Heinrich
participants (1)
-
Heinrich Schuchardt