From 1187b10f21de3d6f6e71e98e30c4b20a947e4541 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Mon, 28 Apr 2014 06:30:14 +0000 Subject: [PATCH] Early return when the "BootOrder" variable doesn't exist to avoid SetVariable() return EFI_NOT_FOUND. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Eric Dong git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15489 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/GenericBdsLib/BdsBoot.c | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index 134833286f..508bd6e9ac 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -521,6 +521,15 @@ BdsDeleteAllInvalidLegacyBootOptions ( return Status; } + BootOrder = BdsLibGetVariableAndSize ( + L"BootOrder", + &gEfiGlobalVariableGuid, + &BootOrderSize + ); + if (BootOrder == NULL) { + return EFI_NOT_FOUND; + } + LegacyBios->GetBbsInfo ( LegacyBios, &HddCount, @@ -529,15 +538,6 @@ BdsDeleteAllInvalidLegacyBootOptions ( &LocalBbsTable ); - BootOrder = BdsLibGetVariableAndSize ( - L"BootOrder", - &gEfiGlobalVariableGuid, - &BootOrderSize - ); - if (BootOrder == NULL) { - BootOrderSize = 0; - } - Index = 0; while (Index < BootOrderSize / sizeof (UINT16)) { UnicodeSPrint (BootOption, sizeof (BootOption), L"Boot%04x", BootOrder[Index]); @@ -634,9 +634,7 @@ BdsDeleteAllInvalidLegacyBootOptions ( // Shrinking variable with existing variable implementation shouldn't fail. // ASSERT_EFI_ERROR (Status); - if (BootOrder != NULL) { - FreePool (BootOrder); - } + FreePool (BootOrder); return Status; }