[U-Boot] [U-Boot,v3,03/21] efi: add some missing __packed

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Sep 15 18:53:39 UTC 2017


On 09/14/2017 12:05 AM, Rob Clark wrote:
> All of the device-path related structures should be packed.  UEFI
> defines the device-path as a byte-aligned data structure.
> 
> Signed-off-by: Rob Clark <robdclark at gmail.com>
> ---
>  include/efi_api.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/include/efi_api.h b/include/efi_api.h
> index ec1b321e8e..175341348e 100644
> --- a/include/efi_api.h
> +++ b/include/efi_api.h
> @@ -284,11 +284,11 @@ struct efi_device_path {
>  	u8 type;
>  	u8 sub_type;
>  	u16 length;
> -};
> +} __packed;
>  
>  struct efi_mac_addr {
>  	u8 addr[32];

Hello Alex, hello Rob,

32 bytes is more than the 6 bytes than we need.
Why was the structure defined this way?

> -};
> +} __packed;
>  
>  #define DEVICE_PATH_TYPE_MESSAGING_DEVICE	0x03
>  #  define DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR	0x0b
> @@ -297,7 +297,7 @@ struct efi_device_path_mac_addr {
>  	struct efi_device_path dp;
>  	struct efi_mac_addr mac;
>  	u8 if_type;
> -};
> +} __packed;
>  
>  #define DEVICE_PATH_TYPE_MEDIA_DEVICE		0x04
>  #  define DEVICE_PATH_SUB_TYPE_FILE_PATH	0x04
> @@ -305,7 +305,7 @@ struct efi_device_path_mac_addr {
>  struct efi_device_path_file_path {
>  	struct efi_device_path dp;
>  	u16 str[32];

Where do we get this 32 from?
Couldn't file/directory names be shorter (1 character) or longer (255
characters)?

Regards

Heinrich

> -};
> +} __packed;
>  
>  #define BLOCK_IO_GUID \
>  	EFI_GUID(0x964e5b21, 0x6459, 0x11d2, \
> 



More information about the U-Boot mailing list