* Re: [PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller
2026-06-18 15:18 ` Simon Glass
@ 2026-06-18 15:20 ` Ilias Apalodimas
2026-06-18 15:27 ` Simon Glass
2026-06-18 15:28 ` Ahmad Fatoum
2026-06-18 15:33 ` Vincent Stehlé
2 siblings, 1 reply; 8+ messages in thread
From: Ilias Apalodimas @ 2026-06-18 15:20 UTC (permalink / raw)
To: Simon Glass
Cc: Vincent Stehlé, u-boot, Ahmad Fatoum, Heinrich Schuchardt,
Tom Rini
Hi Vincent,
On Thu, 18 Jun 2026 at 18:19, Simon Glass <sjg@chromium.org> wrote:
> Hi Vincent,
>
> On Thu, 18 Jun 2026 at 16:09, Vincent Stehlé <vincent.stehle@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 :-)
>
> >
> > 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@arm.com>
> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > Cc: Tom Rini <trini@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);
>
Any reason we can just goto out;
Thanks
/Ilias
> > sole_child = (number_of_children == 1);
> >
> > if (child_handle) {
> > --
> > 2.53.0
> >
>
> Regards,
> Simon
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller
2026-06-18 15:20 ` Ilias Apalodimas
@ 2026-06-18 15:27 ` Simon Glass
2026-06-18 15:48 ` Vincent Stehlé
0 siblings, 1 reply; 8+ messages in thread
From: Simon Glass @ 2026-06-18 15:27 UTC (permalink / raw)
To: Ilias Apalodimas
Cc: Vincent Stehlé, u-boot, Ahmad Fatoum, Heinrich Schuchardt,
Tom Rini
On Thu, 18 Jun 2026 at 16:21, Ilias Apalodimas
<ilias.apalodimas@linaro.org> wrote:
>
> Hi Vincent,
>
>
> On Thu, 18 Jun 2026 at 18:19, Simon Glass <sjg@chromium.org> wrote:
>>
>> Hi Vincent,
>>
>> On Thu, 18 Jun 2026 at 16:09, Vincent Stehlé <vincent.stehle@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 :-)
>>
>> >
>> > 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@arm.com>
>> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
>> > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>> > Cc: Tom Rini <trini@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);
>
>
> Any reason we can just goto out;
+1...every other error path uses 'goto out' so the single EFI_EXIT()
at the bottom handles things - child_handle_buffer is initialised to
NULL so the free() at out is safe.
>
> Thanks
> /Ilias
>>
>> > sole_child = (number_of_children == 1);
>> >
>> > if (child_handle) {
>> > --
>> > 2.53.0
Regards,
Simon
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller
2026-06-18 15:27 ` Simon Glass
@ 2026-06-18 15:48 ` Vincent Stehlé
0 siblings, 0 replies; 8+ messages in thread
From: Vincent Stehlé @ 2026-06-18 15:48 UTC (permalink / raw)
To: Simon Glass
Cc: Ilias Apalodimas, u-boot, Ahmad Fatoum, Heinrich Schuchardt,
Tom Rini
On Thu, Jun 18, 2026 at 04:27:00PM +0100, Simon Glass wrote:
> On Thu, 18 Jun 2026 at 16:21, Ilias Apalodimas
> <ilias.apalodimas@linaro.org> wrote:
> >
> > Hi Vincent,
> >
> >
> > On Thu, 18 Jun 2026 at 18:19, Simon Glass <sjg@chromium.org> wrote:
> >>
> >> Hi Vincent,
> >>
> >> On Thu, 18 Jun 2026 at 16:09, Vincent Stehlé <vincent.stehle@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 :-)
> >>
> >> >
> >> > 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@arm.com>
> >> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> >> > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> >> > Cc: Tom Rini <trini@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);
> >
> >
> > Any reason we can just goto out;
>
> +1...every other error path uses 'goto out' so the single EFI_EXIT()
> at the bottom handles things - child_handle_buffer is initialised to
> NULL so the free() at out is safe.
Hi,
I think you are right; I will send a v2.
Best regards,
Vincent.
>
> >
> > Thanks
> > /Ilias
> >>
> >> > sole_child = (number_of_children == 1);
> >> >
> >> > if (child_handle) {
> >> > --
> >> > 2.53.0
>
> Regards,
> Simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller
2026-06-18 15:18 ` Simon Glass
2026-06-18 15:20 ` Ilias Apalodimas
@ 2026-06-18 15:28 ` Ahmad Fatoum
2026-06-18 15:33 ` Vincent Stehlé
2 siblings, 0 replies; 8+ messages in thread
From: Ahmad Fatoum @ 2026-06-18 15:28 UTC (permalink / raw)
To: Simon Glass, Vincent Stehlé
Cc: u-boot, Heinrich Schuchardt, Ilias Apalodimas, Tom Rini
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@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@arm.com>
>> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
>> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>> Cc: Tom Rini <trini@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 |
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] efi_loader: add missing EFI_EXIT in efi_disconnect_controller
2026-06-18 15:18 ` Simon Glass
2026-06-18 15:20 ` Ilias Apalodimas
2026-06-18 15:28 ` Ahmad Fatoum
@ 2026-06-18 15:33 ` Vincent Stehlé
2 siblings, 0 replies; 8+ messages in thread
From: Vincent Stehlé @ 2026-06-18 15:33 UTC (permalink / raw)
To: Simon Glass
Cc: u-boot, Ahmad Fatoum, Heinrich Schuchardt, Ilias Apalodimas,
Tom Rini
On Thu, Jun 18, 2026 at 04:18:59PM +0100, Simon Glass wrote:
> Hi Vincent,
>
> On Thu, 18 Jun 2026 at 16:09, Vincent Stehlé <vincent.stehle@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?
Hi Simon,
It does now: https://www.mail-archive.com/barebox@lists.infradead.org/msg56391.html
Best regards,
Vincent.
> I wish we could bring these
> projects back together :-)
>
> >
> > 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@arm.com>
> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > Cc: Tom Rini <trini@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
--
Vincent.
^ permalink raw reply [flat|nested] 8+ messages in thread