svn commit: r320234 - head/sys/boot/efi/include
Toomas Soome
tsoome at me.com
Thu Jun 22 18:34:36 UTC 2017
> On 22. juuni 2017, at 21:23, Dimitry Andric <dim at FreeBSD.org> wrote:
>
> On 22 Jun 2017, at 16:30, Ed Maste <emaste at freebsd.org> wrote:
>>
>> Author: emaste
>> Date: Thu Jun 22 14:30:09 2017
>> New Revision: 320234
>> URL: https://svnweb.freebsd.org/changeset/base/320234
>>
>> Log:
>> Make structure padding explicit in EFI_MEMORY_DESCRIPTOR
>>
>> The EFI memory descriptor 64-bit aligns PhysicalStart on both 32- and
>> 64-bit platforms. Make the padding explicit for i386 EFI.
>>
>> Submitted by: Siva Mahadevan <smahadevan at freebsdfoundation.org>
>> MFC after: 3 weeks
>> Sponsored by: The FreeBSD Foundation
>> Differential Revision: https://reviews.freebsd.org/D11301
>>
>> Modified:
>> head/sys/boot/efi/include/efidef.h
>>
>> Modified: head/sys/boot/efi/include/efidef.h
>> ==============================================================================
>> --- head/sys/boot/efi/include/efidef.h Thu Jun 22 13:31:44 2017 (r320233)
>> +++ head/sys/boot/efi/include/efidef.h Thu Jun 22 14:30:09 2017 (r320234)
>> @@ -178,6 +178,7 @@ typedef enum {
>> #define EFI_MEMORY_DESCRIPTOR_VERSION 1
>> typedef struct {
>> UINT32 Type; // Field size is 32 bits followed by 32 bit pad
>> + UINT32 Pad;
>> EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits
>> EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits
>> UINT64 NumberOfPages; // Field size is 64 bits
>
> If you explicitly insert padding, it is better to mark the struct as
> __packed, I think. Or at least also specify the alignment explicitly.
>
> -Dimitry
>
There is also second one with the same issue:
in sys/boot/efi/include/efiprot.h
@@ -90,12 +90,14 @@ typedef struct {
BOOLEAN LogicalPartition;
BOOLEAN ReadOnly;
BOOLEAN WriteCaching;
+ UINT8 pad1[3];
UINT32 BlockSize;
UINT32 IoAlign;
+ UINT8 pad2[4];
EFI_LBA LastBlock;
-} EFI_BLOCK_IO_MEDIA;
+} __packed EFI_BLOCK_IO_MEDIA;
Without this, the EFI32 will get disk sizes wrong.
rgds,
toomas
More information about the svn-src-all
mailing list