From 98ab6e8718de5fabb3ecbc3e8e87e72782d47170 Mon Sep 17 00:00:00 2001 From: Nickle Wang Date: Mon, 3 Jul 2023 20:20:28 +0800 Subject: [PATCH] RedfishPkg/RedfishRestExDxe: fix CPU exception in RedfishRestExDxe RedfishRestExDxe driver failed to uninstall service binding protocol when driver binding stop is called. Application drivers may still use RedfishRestExDxe after it is disconnected in system. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez Reviewed-by: Abner Chang --- RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c b/RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c index ad65ae213a..7036aed426 100644 --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c @@ -3,6 +3,7 @@ Copyright (c) 2019, Intel Corporation. All rights reserved.
(C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -57,6 +58,7 @@ RestExDestroyChildEntryInHandleBuffer ( ChildHandleBuffer = ((RESTEX_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { + RemoveEntryList (&Instance->Link); return EFI_SUCCESS; } @@ -563,7 +565,7 @@ RedfishRestExDriverBindingStop ( ); } - if ((NumberOfChildren == 0) && IsListEmpty (&RestExSb->RestExChildrenList)) { + if (IsListEmpty (&RestExSb->RestExChildrenList)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiRestExServiceBindingProtocolGuid,