[PATCH] efi_loader: Clean up usage of structure jmp_buf_data

Yao Zi ziyao at disroot.org
Sun Feb 16 15:26:31 CET 2025


On Sat, Feb 15, 2025 at 05:58:18PM +0100, Heinrich Schuchardt wrote:
> On 15.02.25 16:54, Yao Zi wrote:
> > Structure jmp_buf_data provides the underlying format of jmp_buf, which
> > we actually don't care about. Clean up existing code to use the standard
> > jmp_buf type. This introduces no functional change.
> > 
> > Signed-off-by: Yao Zi <ziyao at disroot.org>
> > ---
> >   include/efi_loader.h          | 4 ++--
> >   lib/efi_loader/efi_boottime.c | 8 ++++----
> >   2 files changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/include/efi_loader.h b/include/efi_loader.h
> > index dcae6a731a0..4afe8b9c859 100644
> > --- a/include/efi_loader.h
> > +++ b/include/efi_loader.h
> > @@ -15,13 +15,13 @@
> >   #include <efi_api.h>
> >   #include <image.h>
> >   #include <pe.h>
> > +#include <asm/setjmp.h>
> 
> Thanks for this suggestion.
> 
> lib/efi_loader/efi_boottime.c already has this include.
> We don't need to include it globally.

We need to include it, or in files that doesn't include asm/setjmp.h
directly, type jmp_buf is unknown, failing the compilation.

> The rest looks fine.
> 
> Best regards
> 
> Heinrich

Thanks,
Yao Zi

> 
> >   #include <linux/list.h>
> >   #include <linux/sizes.h>
> >   #include <linux/oid_registry.h>
> > 
> >   struct blk_desc;
> >   struct bootflow;
> > -struct jmp_buf_data;
> > 
> >   #if CONFIG_IS_ENABLED(EFI_LOADER)
> > 
> > @@ -485,7 +485,7 @@ struct efi_loaded_image_obj {
> >   	efi_status_t *exit_status;
> >   	efi_uintn_t *exit_data_size;
> >   	u16 **exit_data;
> > -	struct jmp_buf_data *exit_jmp;
> > +	jmp_buf *exit_jmp;
> >   	EFIAPI efi_status_t (*entry)(efi_handle_t image_handle,
> >   				     struct efi_system_table *st);
> >   	u16 image_type;
> > diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> > index 5164cb15986..80c56b1ee46 100644
> > --- a/lib/efi_loader/efi_boottime.c
> > +++ b/lib/efi_loader/efi_boottime.c
> > @@ -3199,7 +3199,7 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
> >   	void *info;
> >   	efi_handle_t parent_image = current_image;
> >   	efi_status_t exit_status;
> > -	struct jmp_buf_data exit_jmp;
> > +	jmp_buf exit_jmp;
> > 
> >   	EFI_ENTRY("%p, %p, %p", image_handle, exit_data_size, exit_data);
> > 
> > @@ -3238,7 +3238,7 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
> >   	}
> > 
> >   	/* call the image! */
> > -	if (setjmp(&exit_jmp)) {
> > +	if (setjmp(exit_jmp)) {
> >   		/*
> >   		 * We called the entry point of the child image with EFI_CALL
> >   		 * in the lines below. The child image called the Exit() boot
> > @@ -3444,7 +3444,7 @@ static efi_status_t EFIAPI efi_exit(efi_handle_t image_handle,
> >   	struct efi_loaded_image *loaded_image_protocol;
> >   	struct efi_loaded_image_obj *image_obj =
> >   		(struct efi_loaded_image_obj *)image_handle;
> > -	struct jmp_buf_data *exit_jmp;
> > +	jmp_buf *exit_jmp;
> > 
> >   	EFI_ENTRY("%p, %ld, %zu, %p", image_handle, exit_status,
> >   		  exit_data_size, exit_data);
> > @@ -3511,7 +3511,7 @@ static efi_status_t EFIAPI efi_exit(efi_handle_t image_handle,
> >   	 */
> >   	efi_restore_gd();
> > 
> > -	longjmp(exit_jmp, 1);
> > +	longjmp(*exit_jmp, 1);
> > 
> >   	panic("EFI application exited");
> >   out:
> 


More information about the U-Boot mailing list