[PATCH 1/1] sandbox: handling out of memory

assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c index 1f794123b3..34b6fff7e7 100644 --- a/arch/sandbox/cpu/state.c +++ b/arch/sandbox/cpu/state.c @@ -378,7 +378,10 @@ int state_init(void)
state->ram_size = CONFIG_SYS_SDRAM_SIZE; state->ram_buf = os_malloc(state->ram_size); - assert(state->ram_buf); + if (!state->ram_buf) { + printf("Out of memory\n"); + os_exit(1); + }
state_reset_for_test(state); /* -- 2.26.2

Hi Heinrich,
On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Reviewed-by: Simon Glass sjg@chromium.org
What sort of environment are you using that returns NULL in this case?
Regards, Simon
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c index 1f794123b3..34b6fff7e7 100644 --- a/arch/sandbox/cpu/state.c +++ b/arch/sandbox/cpu/state.c @@ -378,7 +378,10 @@ int state_init(void)
state->ram_size = CONFIG_SYS_SDRAM_SIZE; state->ram_buf = os_malloc(state->ram_size);
assert(state->ram_buf);
if (!state->ram_buf) {
printf("Out of memory\n");
os_exit(1);
} state_reset_for_test(state); /*
-- 2.26.2

Am June 7, 2020 1:45:53 PM UTC schrieb Simon Glass sjg@chromium.org:
Hi Heinrich,
On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Reviewed-by: Simon Glass sjg@chromium.org
What sort of environment are you using that returns NULL in this case?
You will get NULL here if mmap() fails. This should happen if your machine has less then 128 MiB left over or you increase the RAM size of the sandbox.
For testing I suggest you increase the sandbox memory size beyond the RAM and swap size of your computer.
Best regards
Heinrich
Regards, Simon
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c index 1f794123b3..34b6fff7e7 100644 --- a/arch/sandbox/cpu/state.c +++ b/arch/sandbox/cpu/state.c @@ -378,7 +378,10 @@ int state_init(void)
state->ram_size = CONFIG_SYS_SDRAM_SIZE; state->ram_buf = os_malloc(state->ram_size);
assert(state->ram_buf);
if (!state->ram_buf) {
printf("Out of memory\n");
os_exit(1);
} state_reset_for_test(state); /*
-- 2.26.2

On 6/7/20 4:02 PM, Heinrich Schuchardt wrote:
Am June 7, 2020 1:45:53 PM UTC schrieb Simon Glass sjg@chromium.org:
Hi Heinrich,
On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Reviewed-by: Simon Glass sjg@chromium.org
What sort of environment are you using that returns NULL in this case?
You will get NULL here if mmap() fails. This should happen if your machine has less then 128 MiB left over or you increase the RAM size of the sandbox.
For testing I suggest you increase the sandbox memory size beyond the RAM and swap size of your computer.
Best regards
Heinrich
An excessive RAM sandbox w/o the patch:
$ ./u-boot Segmentation fault
with the patch
$ ./u-boot Out of memory
Best regards
Heinrich
Regards, Simon
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c index 1f794123b3..34b6fff7e7 100644 --- a/arch/sandbox/cpu/state.c +++ b/arch/sandbox/cpu/state.c @@ -378,7 +378,10 @@ int state_init(void)
state->ram_size = CONFIG_SYS_SDRAM_SIZE; state->ram_buf = os_malloc(state->ram_size);
assert(state->ram_buf);
if (!state->ram_buf) {
printf("Out of memory\n");
os_exit(1);
} state_reset_for_test(state); /*
-- 2.26.2

On 6/7/20 4:02 PM, Heinrich Schuchardt wrote:
Am June 7, 2020 1:45:53 PM UTC schrieb Simon Glass sjg@chromium.org:
Hi Heinrich,
On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Reviewed-by: Simon Glass sjg@chromium.org
What sort of environment are you using that returns NULL in this case?
You will get NULL here if mmap() fails. This should happen if your machine has less then 128 MiB left over or you increase the RAM size of the sandbox.
For testing I suggest you increase the sandbox memory size beyond the RAM and swap size of your computer.
Best regards
Heinrich
An excessive RAM sandbox w/o the patch:
$ ./u-boot Segmentation fault
with the patch
$ ./u-boot Out of memory
Best regards
Heinrich
Regards, Simon
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
Applied to u-boot-dm/next, thanks!

On 6/7/20 4:02 PM, Heinrich Schuchardt wrote:
Am June 7, 2020 1:45:53 PM UTC schrieb Simon Glass sjg@chromium.org:
Hi Heinrich,
On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
assert() only works in debug mode. So checking a successful memory allocation should not use assert().
Reviewed-by: Simon Glass sjg@chromium.org
What sort of environment are you using that returns NULL in this case?
You will get NULL here if mmap() fails. This should happen if your machine has less then 128 MiB left over or you increase the RAM size of the sandbox.
For testing I suggest you increase the sandbox memory size beyond the RAM and swap size of your computer.
Best regards
Heinrich
An excessive RAM sandbox w/o the patch:
$ ./u-boot Segmentation fault
with the patch
$ ./u-boot Out of memory
Best regards
Heinrich
Regards, Simon
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/sandbox/cpu/state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
Applied to u-boot-dm/next, thanks! Applied to u-boot-dm/next, thanks!
participants (2)
-
Heinrich Schuchardt
-
Simon Glass