/*++\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
#include "PiDxe.h"\r
#include <Guid/EventGroup.h>\r
#include <Protocol/FirmwareVolumeBlock.h>\r
-#include <Guid/AlternateFvBlock.h>\r
#include <Protocol/DevicePath.h>\r
\r
#include <Library/UefiLib.h>\r
#include <Library/HobLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/DevicePathLib.h>
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/DevicePathLib.h>\r
\r
#include "FwBlockService.h"\r
\r
\r
--*/\r
{\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
EFI_STATUS Status;\r
\r
//\r
EFI_STATUS\r
FvbGetVolumeAttributes (\r
IN UINTN Instance,\r
- OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
+ OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
IN ESAL_FWB_GLOBAL *Global,\r
IN BOOLEAN Virtual\r
)\r
\r
--*/\r
{\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
EFI_STATUS Status;\r
\r
//\r
UINTN Offset;\r
EFI_LBA StartLba;\r
EFI_LBA NextLba;\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
EFI_FV_BLOCK_MAP_ENTRY *BlockMap;\r
EFI_STATUS Status;\r
\r
{\r
\r
EFI_FVB_ATTRIBUTES_2 Attributes;\r
- UINTN LbaAddress;\r
- UINTN LbaLength;\r
- EFI_STATUS Status;\r
- UINT8 Data;\r
+ UINTN LbaAddress;\r
+ UINTN LbaLength;\r
+ EFI_STATUS Status;\r
+ UINT8 Data;\r
\r
//\r
// Check if the FV is write enabled\r
EFI_STATUS\r
FvbSetVolumeAttributes (\r
IN UINTN Instance,\r
- IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
+ IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
IN ESAL_FWB_GLOBAL *Global,\r
IN BOOLEAN Virtual\r
)\r
\r
--*/\r
{\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
EFI_FVB_ATTRIBUTES_2 OldAttributes;\r
EFI_FVB_ATTRIBUTES_2 *AttribPtr;\r
- UINT32 Capabilities;\r
- UINT32 OldStatus;\r
- UINT32 NewStatus;\r
- EFI_STATUS Status;\r
+ UINT32 Capabilities;\r
+ UINT32 OldStatus;\r
+ UINT32 NewStatus;\r
+ EFI_STATUS Status;\r
EFI_FVB_ATTRIBUTES_2 UnchangedAttributes;\r
\r
\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolGetPhysicalAddress (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
OUT EFI_PHYSICAL_ADDRESS *Address\r
)\r
/*++\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolGetBlockSize (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
IN EFI_LBA Lba,\r
OUT UINTN *BlockSize,\r
OUT UINTN *NumOfBlocks\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolGetAttributes (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
- OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolSetAttributes (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
- IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolEraseBlocks (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
... \r
)\r
/*++\r
--*/\r
{\r
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
UINTN NumOfBlocks;\r
VA_LIST args;\r
EFI_LBA StartingLba;\r
//\r
// Check input parameters\r
//\r
- if (NumOfLba == 0) {\r
+ if (NumOfLba == 0 || (StartingLba + NumOfLba) > NumOfBlocks) {\r
VA_END (args);\r
return EFI_INVALID_PARAMETER;\r
}\r
-\r
- if ((StartingLba + NumOfLba) > NumOfBlocks) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
} while (1);\r
\r
VA_END (args);\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolWrite (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
IN EFI_LBA Lba,\r
IN UINTN Offset,\r
IN OUT UINTN *NumBytes,\r
EFI_STATUS\r
EFIAPI\r
FvbProtocolRead (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
+ IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
IN EFI_LBA Lba,\r
IN UINTN Offset,\r
IN OUT UINTN *NumBytes,\r
--*/\r
{\r
EFI_STATUS Status;\r
- EFI_FW_VOL_INSTANCE *FwhInstance;\r
+ EFI_FW_VOL_INSTANCE *FwhInstance = NULL;\r
EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
EFI_DXE_SERVICES *DxeServices;\r
EFI_GCD_MEMORY_SPACE_DESCRIPTOR Descriptor;\r
ASSERT (FALSE);\r
}\r
\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &FwbHandle,\r
- &gEfiAlternateFvBlockGuid,\r
- NULL,\r
- NULL\r
- );\r
-\r
- ASSERT_EFI_ERROR (Status);\r
-\r
FwhInstance = (EFI_FW_VOL_INSTANCE *)\r
(\r
(UINTN) ((UINT8 *) FwhInstance) + FwVolHeader->HeaderLength +\r