summaryrefslogtreecommitdiffstats
path: root/RedfishPkg
diff options
context:
space:
mode:
authorNickle Wang <nicklew@nvidia.com>2023-07-03 20:20:28 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-07-06 13:25:15 +0000
commit98ab6e8718de5fabb3ecbc3e8e87e72782d47170 (patch)
tree0e30082d51592f8af38e53339725fa557d47d277 /RedfishPkg
parentaf8859bce2ffa8d72d8fb30149a0ef6423a8cc47 (diff)
downloadedk2-98ab6e8718de5fabb3ecbc3e8e87e72782d47170.tar.gz
edk2-98ab6e8718de5fabb3ecbc3e8e87e72782d47170.tar.bz2
edk2-98ab6e8718de5fabb3ecbc3e8e87e72782d47170.zip
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 <nicklew@nvidia.com> Cc: Abner Chang <abner.chang@amd.com> Cc: Igor Kulchytskyy <igork@ami.com> Cc: Nick Ramirez <nramirez@nvidia.com> Reviewed-by: Abner Chang <abner.chang@amd.com>
Diffstat (limited to 'RedfishPkg')
-rw-r--r--RedfishPkg/RedfishRestExDxe/RedfishRestExDriver.c4
1 files changed, 3 insertions, 1 deletions
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.<BR>
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+ 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,