Reviewed-by: Eric Dong <eric.d...@intel.com>

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Dandan 
> Bi
> Sent: Monday, March 14, 2016 3:24 PM
> To: edk2-devel@lists.01.org
> Cc: Dong, Eric; Gao, Liming
> Subject: [edk2] [patch] IntelFrameworkModulePkg/LegacyBootMaintUiLib: Refine 
> the code
> 
> Remove the ASSERT code that may be triggered in LegacyBootMaintUiLib.
> 
> Cc: Liming Gao <liming....@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Dandan Bi <dandan...@intel.com>
> ---
>  .../LegacyBootMaintUiLib/LegacyBootMaintUi.c       | 30 
> ++++++++++++++++++----
>  1 file changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git 
> a/IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUi.c
> b/IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUi.c
> index 65d617c..c9d6ee4 100644
> --- a/IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUi.c
> +++ b/IntelFrameworkModulePkg/Library/LegacyBootMaintUiLib/LegacyBootMaintUi.c
> @@ -1,9 +1,9 @@
>  /** @file
>    Legacy Boot Maintainence UI implementation.
> 
> -Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD 
> License
>  which accompanies this distribution.  The full text of the license may be 
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
> @@ -107,12 +107,15 @@ HII_VENDOR_DEVICE_PATH  
> mLegacyBootOptionHiiVendorDevicePath = {
>    @param DevOrderCount      Count of the BBS Index
>    @param EnBootOption       Callee allocated buffer containing the enabled 
> Boot Option Numbers
>    @param EnBootOptionCount  Count of the enabled Boot Option Numbers
>    @param DisBootOption      Callee allocated buffer containing the disabled 
> Boot Option Numbers
>    @param DisBootOptionCount Count of the disabled Boot Option Numbers
> +
> +  @return EFI_SUCCESS       The function completed successfully.
> +  @retval other             Contain some error, details see  the status 
> return by gRT->SetVariable.
>  **/
> -VOID
> +EFI_STATUS
>  OrderLegacyBootOption4SameType (
>    UINT16                   *DevOrder,
>    UINTN                    DevOrderCount,
>    UINT16                   **EnBootOption,
>    UINTN                    *EnBootOptionCount,
> @@ -141,10 +144,11 @@ OrderLegacyBootOption4SameType (
>    *EnBootOption       = AllocatePool (BootOrderSize);
>    *DisBootOption      = AllocatePool (BootOrderSize);
>    *DisBootOptionCount = 0;
>    *EnBootOptionCount  = 0;
>    Index               = 0;
> +  Status              = EFI_SUCCESS;
> 
>    ASSERT (BbsIndexArray != NULL);
>    ASSERT (DeviceTypeArray != NULL);
>    ASSERT (*EnBootOption != NULL);
>    ASSERT (*DisBootOption != NULL);
> @@ -205,27 +209,29 @@ OrderLegacyBootOption4SameType (
>                    &gEfiGlobalVariableGuid,
>                    VAR_FLAG,
>                    BootOrderSize,
>                    BootOrder
>                    );
> -  ASSERT_EFI_ERROR (Status);
> 
>    FreePool (NewBootOption);
>    FreePool (DeviceTypeArray);
>    FreePool (BbsIndexArray);
> +
> +  return Status;
>  }
> 
>  /**
>    Update the legacy BBS boot option. L"LegacyDevOrder" and 
> gEfiLegacyDevOrderVariableGuid EFI Variable
>    is udpated with the new Legacy Boot order. The EFI Variable of "Boot####" 
> and gEfiGlobalVariableGuid
>    is also updated.
> 
>    @param NVMapData   The data for egacy BBS boot.
> 
>    @return EFI_SUCCESS           The function completed successfully.
> -  @retval EFI_NOT_FOUND         If L"LegacyDevOrder" and 
> gEfiLegacyDevOrderVariableGuid EFI Variable can be found.
> +  @retval EFI_NOT_FOUND         If L"LegacyDevOrder" and 
> gEfiLegacyDevOrderVariableGuid EFI Variable can not be found.
>    @retval EFI_OUT_OF_RESOURCES  Fail to allocate memory resource
> +  @retval other                 Contain some error, details see  the status 
> return by gRT->SetVariable.
>  **/
>  EFI_STATUS
>  UpdateBBSOption (
>    IN LEGACY_BOOT_NV_DATA            *NVMapData
>    )
> @@ -258,10 +264,12 @@ UpdateBBSOption (
> 
> 
>    DisMap              = NULL;
>    NewOrder            = NULL;
>    CurrentType         = 0;
> +  EnBootOption        = NULL;
> +  DisBootOption       = NULL;
> 
> 
>    DisMap  = mLegacyBootOptionPrivate->MaintainMapData->DisableMap;
>    Status  = EFI_SUCCESS;
> 
> @@ -379,18 +387,21 @@ UpdateBBSOption (
>      //
>      // 1. Re-order the Option Number in BootOrder according to Legacy Dev 
> Order
>      //
>      ASSERT (OptionMenu->MenuNumber == DevOrder->Length / sizeof (UINT16) - 
> 1);
> 
> -    OrderLegacyBootOption4SameType (
> +    Status = OrderLegacyBootOption4SameType (
>        DevOrder->Data,
>        DevOrder->Length / sizeof (UINT16) - 1,
>        &EnBootOption,
>        &EnBootOptionCount,
>        &DisBootOption,
>        &DisBootOptionCount
>        );
> +     if (EFI_ERROR(Status)) {
> +       goto Fail;
> +     }
> 
>      //
>      // 2. Deactivate the DisBootOption and activate the EnBootOption
>      //
>      for (Index = 0; Index < DisBootOptionCount; Index++) {
> @@ -444,10 +455,19 @@ UpdateBBSOption (
>                    EFI_VARIABLE_BOOTSERVICE_ACCESS | 
> EFI_VARIABLE_NON_VOLATILE,
>                    VarSize,
>                    OriginalPtr
>                    );
> 
> +Fail:
> +  if (EnBootOption != NULL) {
> +    FreePool (EnBootOption);
> +  }
> +
> +  if (DisBootOption != NULL) {
> +    FreePool (DisBootOption);
> +  }
> +
>    FreePool (OriginalPtr);
>    return Status;
>  }
> 
>  /**
> --
> 1.9.5.msysgit.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to