From f8de39afab5358c05938e89f8f9a1c389dd8e88f Mon Sep 17 00:00:00 2001 From: Mike Maslenkin Date: Fri, 22 Dec 2023 01:58:12 +0300 Subject: [PATCH] RedfishDiscoverDxe: add a helper function deallocating string resources. This patch adds a handy helper function deallocating resources from the EFI_REDFISH_DISCOVERED_INFORMATION structure instance. Cc: Nickle Wang Cc: Igor Kulchytskyy Signed-off-by: Mike Maslenkin Reviewed-by: Abner Chang --- .../RedfishDiscoverDxe/RedfishDiscoverDxe.c | 68 ++++++++++++------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c index e673de8ef7..0f1c056175 100644 --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c @@ -712,6 +712,49 @@ DiscoverRedfishHostInterface ( return Status; } +/** + The function releases particular strings into the structure instance. + + @param[in] Information EFI_REDFISH_DISCOVERED_INFORMATION + +**/ +STATIC +VOID +FreeInformationData ( + IN EFI_REDFISH_DISCOVERED_INFORMATION *Information + ) +{ + if (Information->Location != NULL) { + FreePool (Information->Location); + Information->Location = NULL; + } + + if (Information->Uuid != NULL) { + FreePool (Information->Uuid); + Information->Uuid = NULL; + } + + if (Information->Os != NULL) { + FreePool (Information->Os); + Information->Os = NULL; + } + + if (Information->OsVersion != NULL) { + FreePool (Information->OsVersion); + Information->OsVersion = NULL; + } + + if (Information->Product != NULL) { + FreePool (Information->Product); + Information->Product = NULL; + } + + if (Information->ProductVer != NULL) { + FreePool (Information->ProductVer); + Information->ProductVer = NULL; + } +} + /** The function initializes particular strings into the structure instance. @@ -1514,30 +1557,7 @@ RedfishServiceReleaseService ( do { if (DiscoveredRedfishInstance->Instance == ThisRedfishInstance) { RemoveEntryList (&DiscoveredRedfishInstance->NextInstance); - if (ThisRedfishInstance->Information.Location != NULL) { - FreePool (ThisRedfishInstance->Information.Location); - } - - if (ThisRedfishInstance->Information.Uuid != NULL) { - FreePool (ThisRedfishInstance->Information.Uuid); - } - - if (ThisRedfishInstance->Information.Os != NULL) { - FreePool (ThisRedfishInstance->Information.Os); - } - - if (ThisRedfishInstance->Information.OsVersion != NULL) { - FreePool (ThisRedfishInstance->Information.OsVersion); - } - - if (ThisRedfishInstance->Information.Product != NULL) { - FreePool (ThisRedfishInstance->Information.Product); - } - - if (ThisRedfishInstance->Information.ProductVer != NULL) { - FreePool (ThisRedfishInstance->Information.ProductVer); - } - + FreeInformationData (&ThisRedfishInstance->Information); FreePool ((VOID *)ThisRedfishInstance); goto ReleaseNext; }