RedfishRestExDriverBindingStop() does not uninstall service binding protocol and release resource because: - RestExDestroyChildEntryInHandleBuffer() does not remove entry when NetIsInHandleBuffer() return false. So the linked list is not empty. - When NumberOfChildrenis 0, binding stop function return in the NetLibGetNicHandle() condition check and never reach to the reset of code in driver binding stop.
Signed-off-by: Nickle Wang <nick...@nvidia.com> Cc: Abner Chang <abner.ch...@amd.com> Cc: Igor Kulchytskyy <ig...@ami.com> Cc: Nick Ramirez <nrami...@nvidia.com> --- 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.<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, -- 2.39.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100002): https://edk2.groups.io/g/devel/message/100002 Mute This Topic: https://groups.io/mt/96875045/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-