[PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller

Ahmad Fatoum a.fatoum at pengutronix.de
Thu Jun 18 17:28:56 CEST 2026


Hello,

On 6/18/26 5:18 PM, Simon Glass wrote:
> Hi Vincent,
> 
> On Thu, 18 Jun 2026 at 16:09, Vincent Stehlé <vincent.stehle at arm.com> wrote:
>>
>> Make sure to call EFI_EXIT() in efi_disconnect_controller(), when returning
>> after having called EFI_ENTRY().
>>
>> This is inspired by a barebox fix. [1]
> 
> Hmm, does Barebox support EFI_LOADER now? I wish we could bring these
> projects back together :-)

It's not as extensive as U-Boot's yet, but it's usable for the common
boot me a distro GRUB use case. The code originated from U-Boot with
some parts heavily rewritten to fit barebox, e.g. the EFI filesystem
protocol is implemented on top of dirfds, so it reuses VFS path handling
and other such things.

The imported files have Origin-URL comments pointing back at U-Boot
including the revision they originated from, but we are still in need of
better tooling to make use of these tags.

@Vincent, I suspect a number of fixes in [1] are also applicable to
U-Boot, but I haven't checked.

[1]:
https://lore.kernel.org/barebox/20260216084758.3548990-1-a.fatoum@pengutronix.de/

Cheers,
Ahmad



> 
>>
>> Link: https://git.pengutronix.de/cgit/barebox/commit/?id=080db65e39a877b000baaf843c997a69821dfe69 [1]
>> Fixes: 314bed6c854e ("efi_loader: fix DisconnectController() for sole child")
>> Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
>> Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
>> Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
>> Cc: Tom Rini <trini at konsulko.com>
>> ---
>>  lib/efi_loader/efi_boottime.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
>> index de57823bd44..b6966652d97 100644
>> --- a/lib/efi_loader/efi_boottime.c
>> +++ b/lib/efi_loader/efi_boottime.c
>> @@ -3895,7 +3895,7 @@ efi_status_t EFIAPI efi_disconnect_controller(
>>                                       &number_of_children,
>>                                       &child_handle_buffer);
>>         if (r != EFI_SUCCESS)
>> -               return r;
>> +               return EFI_EXIT(r);
>>         sole_child = (number_of_children == 1);
>>
>>         if (child_handle) {
>> --
>> 2.53.0
>>
> 
> Regards,
> Simon
> 

-- 
Pengutronix e.K.                  |                             |
Steuerwalder Str. 21              | http://www.pengutronix.de/  |
31137 Hildesheim, Germany         | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686  | Fax:   +49-5121-206917-5555 |



More information about the U-Boot mailing list