[edk2] [PATCH] MdeModulePkg/UefiBootManagerLib: Remove assertion

Ruiyu Ni posted 1 patch 6 years, 5 months ago
Failed in applying to current master (apply log)
MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
[edk2] [PATCH] MdeModulePkg/UefiBootManagerLib: Remove assertion
Posted by Ruiyu Ni 6 years, 5 months ago
EfiBootManagerStartHotkeyService() asserts when "BootOptionSupport"
variable doesn't exist.

In fact, though "BootOptionSupport" variable is set in BdsDxe
module, it's possible that the variable is deleted by
PlatformBootManagerBeforeConsole().

The patch removes the assertion and adds code to handle the case.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
---
 MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
index efad073880..d18ce02eb3 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
@@ -870,13 +870,13 @@ EfiBootManagerStartHotkeyService (
   EFI_EVENT                    Event;
   UINT32                       *BootOptionSupport;
 
-  Status = GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **) &BootOptionSupport, NULL);
-  ASSERT (BootOptionSupport != NULL);
-
-  if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY)  != 0) {
-    mBmHotkeySupportCount = ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT));
+  GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **) &BootOptionSupport, NULL);
+  if (BootOptionSupport != NULL) {
+    if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY)  != 0) {
+      mBmHotkeySupportCount = ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT));
+    }
+    FreePool (BootOptionSupport);
   }
-  FreePool (BootOptionSupport);
 
   if (mBmHotkeySupportCount == 0) {
     DEBUG ((EFI_D_INFO, "Bds: BootOptionSupport NV variable forbids starting the hotkey service.\n"));
-- 
2.15.0.gvfs.1.preview.4

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH] MdeModulePkg/UefiBootManagerLib: Remove assertion
Posted by Yao, Jiewen 6 years, 5 months ago
Reviewed-by: Jiewen.yao@intel.com

> -----Original Message-----
> From: Ni, Ruiyu
> Sent: Monday, November 20, 2017 1:14 PM
> To: edk2-devel@lists.01.org
> Cc: Yao, Jiewen <jiewen.yao@intel.com>
> Subject: [PATCH] MdeModulePkg/UefiBootManagerLib: Remove assertion
> 
> EfiBootManagerStartHotkeyService() asserts when "BootOptionSupport"
> variable doesn't exist.
> 
> In fact, though "BootOptionSupport" variable is set in BdsDxe
> module, it's possible that the variable is deleted by
> PlatformBootManagerBeforeConsole().
> 
> The patch removes the assertion and adds code to handle the case.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> ---
>  MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
> b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
> index efad073880..d18ce02eb3 100644
> --- a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
> +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c
> @@ -870,13 +870,13 @@ EfiBootManagerStartHotkeyService (
>    EFI_EVENT                    Event;
>    UINT32                       *BootOptionSupport;
> 
> -  Status = GetEfiGlobalVariable2
> (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **)
> &BootOptionSupport, NULL);
> -  ASSERT (BootOptionSupport != NULL);
> -
> -  if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY)  != 0) {
> -    mBmHotkeySupportCount = ((*BootOptionSupport &
> EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32
> (EFI_BOOT_OPTION_SUPPORT_COUNT));
> +  GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME,
> (VOID **) &BootOptionSupport, NULL);
> +  if (BootOptionSupport != NULL) {
> +    if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY)  != 0) {
> +      mBmHotkeySupportCount = ((*BootOptionSupport &
> EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32
> (EFI_BOOT_OPTION_SUPPORT_COUNT));
> +    }
> +    FreePool (BootOptionSupport);
>    }
> -  FreePool (BootOptionSupport);
> 
>    if (mBmHotkeySupportCount == 0) {
>      DEBUG ((EFI_D_INFO, "Bds: BootOptionSupport NV variable forbids
> starting the hotkey service.\n"));
> --
> 2.15.0.gvfs.1.preview.4

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel