git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4643
6f19259b-4bc3-4df7-8a09-
765794883524
EFI_LBA Index;\r
UINTN LbaSize;\r
UINTN ScratchLbaSizeData;\r
EFI_LBA Index;\r
UINTN LbaSize;\r
UINTN ScratchLbaSizeData;\r
\r
//\r
// First LBA\r
//\r
\r
//\r
// First LBA\r
//\r
- FvbGetLbaAddress (Instance, StartLba, NULL, &LbaSize, NULL, Global, Virtual);\r
+ Status = FvbGetLbaAddress (Instance, StartLba, NULL, &LbaSize, NULL, Global, Virtual);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
//\r
// Use the scratch space as the intermediate buffer to transfer data\r
\r
//\r
// Use the scratch space as the intermediate buffer to transfer data\r
// write the data back to the first block\r
//\r
if (ScratchLbaSizeData > 0) {\r
// write the data back to the first block\r
//\r
if (ScratchLbaSizeData > 0) {\r
- FvbWriteBlock (Instance, StartLba, 0, &ScratchLbaSizeData, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
+ Status = FvbWriteBlock (Instance, StartLba, 0, &ScratchLbaSizeData, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
}\r
//\r
// Middle LBAs\r
}\r
//\r
// Middle LBAs\r
// Last LBAs, the same as first LBAs\r
//\r
if (LastLba > StartLba) {\r
// Last LBAs, the same as first LBAs\r
//\r
if (LastLba > StartLba) {\r
- FvbGetLbaAddress (Instance, LastLba, NULL, &LbaSize, NULL, Global, Virtual);\r
+ Status = FvbGetLbaAddress (Instance, LastLba, NULL, &LbaSize, NULL, Global, Virtual);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
FvbReadBlock (Instance, LastLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
FvbEraseBlock (Instance, LastLba, Global, Virtual);\r
}\r
\r
FvbReadBlock (Instance, LastLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
FvbEraseBlock (Instance, LastLba, Global, Virtual);\r
}\r
\r
- ScratchLbaSizeData = LbaSize - (OffsetStartLba + 1);\r
+ ScratchLbaSizeData = LbaSize - (OffsetLastLba + 1);\r
+ \r
+ if (ScratchLbaSizeData > 0) {\r
+ Status = FvbWriteBlock (\r
+ Instance,\r
+ LastLba,\r
+ (OffsetLastLba + 1),\r
+ &ScratchLbaSizeData,\r
+ Global->FvbScratchSpace[Virtual] + OffsetLastLba + 1,\r
+ Global,\r
+ Virtual\r
+ );\r
+ }\r
- return FvbWriteBlock (\r
- Instance,\r
- LastLba,\r
- (OffsetLastLba + 1),\r
- &ScratchLbaSizeData,\r
- Global->FvbScratchSpace[Virtual],\r
- Global,\r
- Virtual\r
- );\r