Move sure FvImage buffer at its alignment when install FVB protocol on it.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4380 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -413,8 +413,10 @@ Returns:
|
||||
UINTN BlockIndex;
|
||||
UINTN BlockIndex2;
|
||||
UINTN LinearOffset;
|
||||
UINT32 FvAlignment;
|
||||
EFI_FV_BLOCK_MAP_ENTRY *PtrBlockMapEntry;
|
||||
|
||||
|
||||
FvAlignment = 0;
|
||||
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)BaseAddress;
|
||||
//
|
||||
// Validate FV Header, if not as expected, return
|
||||
@@ -423,6 +425,19 @@ Returns:
|
||||
return EFI_VOLUME_CORRUPTED;
|
||||
}
|
||||
//
|
||||
// Get FvHeader alignment
|
||||
//
|
||||
FvAlignment = 1 << ((FwVolHeader->Attributes & EFI_FVB2_ALIGNMENT) >> 16);
|
||||
if (FvAlignment < 8) {
|
||||
FvAlignment = 8;
|
||||
}
|
||||
if ((UINTN)BaseAddress % FvAlignment != 0) {
|
||||
//
|
||||
// FvImage buffer is not at its required alignment.
|
||||
//
|
||||
return EFI_VOLUME_CORRUPTED;
|
||||
}
|
||||
//
|
||||
// Allocate EFI_FW_VOL_BLOCK_DEVICE
|
||||
//
|
||||
FvbDev = CoreAllocateCopyPool (sizeof (EFI_FW_VOL_BLOCK_DEVICE), &mFwVolBlock);
|
||||
|
Reference in New Issue
Block a user