summaryrefslogtreecommitdiffstats
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
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>
-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,