[U-Boot] [PATCH 1/1] efi_loader: efi_guid_t must be 64-bit aligned

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Dec 17 22:45:31 UTC 2018


On 12/16/18 10:32 AM, Ard Biesheuvel wrote:
> On Sat, 15 Dec 2018 at 22:40, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>>
>> The UEFI Specification Version 2.7 Errata A defines:
>>
>> "EFI_GUID
>> 128-bit buffer containing a unique identifier value.
>> Unless otherwise specified, aligned on a 64-bit boundary."
>>
>> Before this patch efi_guid_t was 8-bit aligned.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> 
> Acked-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> 
>> ---
>>  include/efi.h | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/include/efi.h b/include/efi.h
>> index b5e2c64f38b..3018c61b373 100644
>> --- a/include/efi.h
>> +++ b/include/efi.h
>> @@ -49,7 +49,7 @@ struct efi_device_path;
>>
>>  typedef struct {
>>         u8 b[16];
>> -} efi_guid_t;
>> +} efi_guid_t __attribute__ ((aligned (8)));
>>
>>  #define EFI_BITS_PER_LONG      (sizeof(long) * 8)
>>
>> --
>> 2.19.2
>>
> 

Hello Alex,

we should carefully evaluate which side effects this patch has. The
system table contains a link to an array of struct
efi_configuration_table. On 32 bit-systems the patch changes the size of
the entries from 20 to 24 bytes.

So at least this structure we will have to changed to __packed to stay
in sync with GRUB and Linux.

It is unfortunate that the UEFI spec has been written with little detail
on the alignment of structures. Cf. Takahiro's patches concerning the
HII protocols.

Best regards

Heinrich


More information about the U-Boot mailing list