[U-Boot] [PATCH v9 13/18] efi: Add a call to exit() along with why we can't use it

Simon Glass sjg at chromium.org
Fri Sep 14 15:46:48 UTC 2018


Hi Alex,

On 26 August 2018 at 19:13, Alexander Graf <agraf at suse.de> wrote:
>
>
> On 23.08.18 22:37, Heinrich Schuchardt wrote:
>> On 08/08/2018 11:54 AM, Simon Glass wrote:
>>> The test should exit like any other EFI application, by calling exit()
>>> in the boot services API. But this crashes at present on sandbox. For now,
>>> add in the placeholder code.
>>>
>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>> ---
>>>
>>> Changes in v9: None
>>> Changes in v8: None
>>> Changes in v7: None
>>> Changes in v6: None
>>> Changes in v5: None
>>> Changes in v4: None
>>> Changes in v3: None
>>> Changes in v2: None
>>>
>>>  lib/efi_loader/efi_test.c | 12 +++++++++++-
>>>  1 file changed, 11 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/lib/efi_loader/efi_test.c b/lib/efi_loader/efi_test.c
>>> index 4b8d49f324b..5401a0f4715 100644
>>> --- a/lib/efi_loader/efi_test.c
>>> +++ b/lib/efi_loader/efi_test.c
>>> @@ -9,8 +9,18 @@
>>>  int efi_test(efi_handle_t image_handle, struct efi_system_table *systable)
>>>  {
>>>      struct efi_simple_text_output_protocol *con_out = systable->con_out;
>>> +    struct efi_boot_services *boottime = systable->boottime;
>>> +    int ret;
>>>
>>> -    con_out->output_string(con_out, L"Hello, world!\n");
>>> +    ret = con_out->output_string(con_out, L"Hello, world!\n");
>>> +
>>> +    /*
>>> +     * We should really call EFI's exit() here but this crashes at present
>>> +     * on sandbox due to the incorrect use of setjmp() and longjmp(). Once
>>
>> What makes you think that setjmp and longjmp are incorrectly used?
>> Couldn't the sandbox implementation of both create the problem?
>
> I agree, last time we tracked exit problems down to incorrect
> setjmp/longjmp implementations in sandbox.

Yes that's what I mean. I'll reword it a bit.

Regards,
Simon


More information about the U-Boot mailing list