[PATCH 1/1] sandbox: handling out of memory
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Jun 7 18:54:25 CEST 2020
On 6/7/20 4:02 PM, Heinrich Schuchardt wrote:
> Am June 7, 2020 1:45:53 PM UTC schrieb Simon Glass <sjg at chromium.org>:
>> Hi Heinrich,
>>
>> On Thu, 4 Jun 2020 at 11:28, Heinrich Schuchardt <xypron.glpk at gmx.de>
>> wrote:
>>>
>>> assert() only works in debug mode. So checking a successful memory
>>> allocation should not use assert().
>>>
>>
>> Reviewed-by: Simon Glass <sjg at 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 at 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
>>>
>
More information about the U-Boot
mailing list