From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heinrich Schuchardt Date: Fri, 26 Jan 2018 05:06:56 +0100 Subject: [U-Boot] [PATCH] efi_laoder: Call Exit() on return from payload in StartImage() In-Reply-To: <20180125235357.36264-1-agraf@suse.de> References: <20180125235357.36264-1-agraf@suse.de> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 01/26/2018 12:53 AM, Alexander Graf wrote: There is a typo in the subject "efi_laoder". > When a UEFI payload just returns instead of calling the Exit() callback, > we handle that in efi_do_enter() and call Exit on its behalf, so that > the loaded_image->exit_status value is correct. > > We were missing that logic in StartImage(). Call it there too. > > Reported-by: Heinrich Schuchardt > Signed-off-by: Alexander Graf > --- > lib/efi_loader/efi_boottime.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c > index f5dae40f06..4a36b62828 100644 > --- a/lib/efi_loader/efi_boottime.c > +++ b/lib/efi_loader/efi_boottime.c > @@ -1578,8 +1578,13 @@ static efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle, > > ret = EFI_CALL(entry(image_handle, &systab)); > > - /* Should usually never get here */ > - return EFI_EXIT(ret); > + /* > + * Usually UEFI applications call Exit() instead of returning. > + * But because the world doesn not consist of ponies and unicorns, > + * we're happy to emulate that behavior on behalf of a payload > + * that forgot. > + */ > + return EFI_CALL(systab.boottime->exit(image_handle, ret, 0, NULL)); > } > > /* >