From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id DA7D5740051 for ; Mon, 1 Apr 2024 14:18:20 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=NrwEiGOdQC2CfAO4Q3Hw1skMlKIp/21Qt8GqfJldVf8=; c=relaxed/simple; d=groups.io; h=Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20240206; t=1711981099; v=1; b=Qai+Sh/DTb/+Is1ynzbJ01u5zniZ5kww1tf/qasctG17AHIIMUBMrtrmaNplfKnp6OWStU8f EiPN82Hak7rxzcCZZkuZ1a1lBdWQiXXpqFiPz10qChKs1+5UJaeftkq4+ChnGy1LTt8OIn0/8JD NZ5sEgGuwFseOZ3naRko9gxnlZ/EwUpR/MmjV/BTfZHjVOm/1oYGaCBrBdjb4Nsn1VlEVUzrPvI nTRf9+/d+mCopbHzweo7+/m51F0270xk8U02bdlHVY4t3apvTaMi9wAgbjQYDPtbBhfqugQklCR 1bQVfUQ6SDXNKSbQ+BOM9PdjLGfGxLnMT7C5wzVqKr+FQ== X-Received: by 127.0.0.2 with SMTP id AgXAYY7687511xSyM35DI2i3; Mon, 01 Apr 2024 07:18:19 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.68]) by mx.groups.io with SMTP id smtpd.web10.38607.1711981098715723800 for ; Mon, 01 Apr 2024 07:18:18 -0700 X-Received: from DS7PR03CA0050.namprd03.prod.outlook.com (2603:10b6:5:3b5::25) by SJ2PR12MB7962.namprd12.prod.outlook.com (2603:10b6:a03:4c2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.43; Mon, 1 Apr 2024 14:18:13 +0000 X-Received: from DS2PEPF0000343E.namprd02.prod.outlook.com (2603:10b6:5:3b5:cafe::cd) by DS7PR03CA0050.outlook.office365.com (2603:10b6:5:3b5::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46 via Frontend Transport; Mon, 1 Apr 2024 14:18:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.117.160) by DS2PEPF0000343E.mail.protection.outlook.com (10.167.18.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Mon, 1 Apr 2024 14:18:13 +0000 X-Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Mon, 1 Apr 2024 07:17:59 -0700 X-Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Mon, 1 Apr 2024 07:17:59 -0700 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.1258.12 via Frontend Transport; Mon, 1 Apr 2024 07:17:58 -0700 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy , "Nick Ramirez" Subject: [edk2-devel] [edk2-redfish-client][PATCH v2 2/2] RedfishClientPkg/Features: release resources Date: Mon, 1 Apr 2024 22:17:57 +0800 Message-ID: <20240401141757.38594-1-nicklew@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF0000343E:EE_|SJ2PR12MB7962:EE_ X-MS-Office365-Filtering-Correlation-Id: 40c4815d-b32b-4fb1-b13a-08dc525690fb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: tFYXDBN+UiT4rz7O9c6j5rJwa2xJoZpuqY/AF9EPn2XsaLr0Zed8/nkVSgNwK06pSavIJhAtw4ykDSf1KgfGcCEto+fAxQ4eA2M+Vw6RxlAm/o48aqmiSiKMYK4nP/G6ovnhelJGiFg1Gme149Gh/eN4HTiKApXWxDjxY+yEdDsisC3rAbA38qCYcDLAi/hIUMd7PbqdSAFBlOkh3mWECxbUu46dwlyIwec+WqXMCdkT28RIiiSBQaVPey2U+yc0eKh+YpGNe/y3ohJpcMlt+CaaM1i3N+i6tnyW605evE2C95fFixC+PhIypeBVlgQgaev1ADGCL3lUIR4PyIeq3UjSlTrntWB7U7k4g9HVgadwlNN6OwVK1n6B14ahUdOparOKDWkGeQmQ/ryT9Y0wrFSktbyCSqiEYlRoKEFrS52lK5l1DjBclqLmPzKDGxlgGAWmwT0NLMaKqvATto6aGD19oDOOXAvpDTreoB8qPjIwX16Zt/5LQCpn4Yc0ru369120UhFXt85AC333Gfu6zgNiUmF0xVKQyznlbX9Cl6skyrVtAKK3hxijxJ1uGebj4VQUcZhbfAk/Lilqi9kwz/dcnLjhq/jB2kRPrC6uizjIErGcQ6xtKFvmUmjQsGAnnNauvwJsEqSi7qxKgyaiOOjSaPoXWAXC+da6MRCrUtBI5K87zBXhqADdiS1ibIBJljbvO8A9rvdMgHs+0lk8bwc9j5CeMVeqObkeS2y/Puml4N1ynuWBrvGrVbVlf607 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2024 14:18:13.1440 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40c4815d-b32b-4fb1-b13a-08dc525690fb X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DS2PEPF0000343E.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7962 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Mon, 01 Apr 2024 07:18:18 -0700 Reply-To: devel@edk2.groups.io,nicklew@nvidia.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: I9DfTWOPLbz4XjPgxdoetKV9x7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Spam-Flag: yes X-Spam-Level: ************ X-GND-Spam-Score: 190 X-GND-Status: SPAM Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b="Qai+Sh/D"; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io -Release Etag and PendingSettingUri resources. -Update function header for GetHttpResponseEtag() and GetHttpResponseLocation(). Caller has to release returned memory buffer from these two functions. -Fix typo. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez --- .../Features/Bios/v1_0_9/Common/BiosCommon.c | 2 +- .../Features/Bios/v1_0_9/Dxe/BiosDxe.c | 20 ++++++++-- .../BootOption/v1_0_4/Dxe/BootOptionDxe.c | 33 ++++++++++++----- .../BootOptionCollectionDxe.c | 2 +- .../v1_13_0/Dxe/ComputerSystemDxe.c | 33 ++++++++++++----- .../v1_5_0/Dxe/ComputerSystemDxe.c | 33 ++++++++++++----- .../ComputerSystemCollectionDxe.c | 2 +- .../Features/Memory/V1_7_1/Dxe/MemoryDxe.c | 37 ++++++++++++++----- .../MemoryCollectionDxe/MemoryCollectionDxe.c | 2 +- .../RedfishFeatureUtilityLib.c | 2 + 10 files changed, 118 insertions(+), 48 deletions(-) diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c b/Re= dfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c index f40fe215a..5dc97876c 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c @@ -815,7 +815,7 @@ HandleResource ( =20 // // Check and see if target property exist or not even when collection me= mber exists. - // If not, we sill do provision. + // If not, we still do provision. // DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri)); Status =3D EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL); diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c b/RedfishC= lientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c index bb64ef862..5955917f2 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c @@ -158,8 +158,12 @@ RedfishResourceConsumeResource ( // // Searching for etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (ExpectedResponse, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (ExpectedResponse, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); @@ -338,8 +342,12 @@ RedfishResourceCheck ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (&Response, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (&Response, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, failed to check resource from: %s: %r\n", __= func__, Uri, Status)); @@ -348,6 +356,10 @@ RedfishResourceCheck ( // // Release resource // + if (Etag !=3D NULL) { + FreePool (Etag); + } + RedfishHttpFreeResponse (&Response); Private->Payload =3D NULL; =20 diff --git a/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.= c b/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c index 5a66fe59e..1a1262403 100644 --- a/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c +++ b/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c @@ -122,12 +122,13 @@ RedfishResourceConsumeResource ( // // Check and see if "@Redfish.Settings" exist or not. // - Status =3D GetPendingSettings ( - Private->RedfishService, - Response.Payload, - &PendingSettingResponse, - &PendingSettingUri - ); + PendingSettingUri =3D NULL; + Status =3D GetPendingSettings ( + Private->RedfishService, + Response.Payload, + &PendingSettingResponse, + &PendingSettingUri + ); if (!EFI_ERROR (Status)) { DEBUG ((REDFISH_BOOT_OPTION_DEBUG_TRACE, "%a: @Redfish.Settings found:= %s\n", __func__, PendingSettingUri)); SetRedfishSettingsObjectsUri (Private->Uri, PendingSettingUri); @@ -147,8 +148,12 @@ RedfishResourceConsumeResource ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (ExpectedResponse, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (ExpectedResponse, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); @@ -170,6 +175,10 @@ RedfishResourceConsumeResource ( Private->Json =3D NULL; } =20 + if (PendingSettingUri !=3D NULL) { + FreePool (PendingSettingUri); + } + return Status; } =20 @@ -323,8 +332,12 @@ RedfishResourceCheck ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (&Response, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (&Response, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((REDFISH_BOOT_OPTION_DEBUG_TRACE, "%a: failed to check resource= from: %s: %r\n", __func__, Uri, Status)); diff --git a/RedfishClientPkg/Features/BootOptionCollection/BootOptionColle= ctionDxe.c b/RedfishClientPkg/Features/BootOptionCollection/BootOptionColle= ctionDxe.c index cd1437f54..79ec739cb 100644 --- a/RedfishClientPkg/Features/BootOptionCollection/BootOptionCollectionDx= e.c +++ b/RedfishClientPkg/Features/BootOptionCollection/BootOptionCollectionDx= e.c @@ -85,7 +85,7 @@ HandleResource ( =20 // // Check and see if target property exist or not even when collection me= mber exists. - // If not, we sill do provision. + // If not, we still do provision. // DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a Check for %s\n",= __func__, Uri)); Status =3D EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL); diff --git a/RedfishClientPkg/Features/ComputerSystem/v1_13_0/Dxe/ComputerS= ystemDxe.c b/RedfishClientPkg/Features/ComputerSystem/v1_13_0/Dxe/ComputerS= ystemDxe.c index a0c71212b..9c405bb2f 100644 --- a/RedfishClientPkg/Features/ComputerSystem/v1_13_0/Dxe/ComputerSystemDx= e.c +++ b/RedfishClientPkg/Features/ComputerSystem/v1_13_0/Dxe/ComputerSystemDx= e.c @@ -125,12 +125,13 @@ RedfishResourceConsumeResource ( // Check and see if "@Redfish.Settings" exist or not. // ZeroMem (&PendingSettingResponse, sizeof (REDFISH_RESPONSE)); - Status =3D GetPendingSettings ( - Private->RedfishService, - Response.Payload, - &PendingSettingResponse, - &PendingSettingUri - ); + PendingSettingUri =3D NULL; + Status =3D GetPendingSettings ( + Private->RedfishService, + Response.Payload, + &PendingSettingResponse, + &PendingSettingUri + ); if (!EFI_ERROR (Status)) { DEBUG ((REDFISH_DEBUG_TRACE, "%a: @Redfish.Settings found: %s\n", __fu= nc__, PendingSettingUri)); SetRedfishSettingsObjectsUri (Private->Uri, PendingSettingUri); @@ -151,8 +152,12 @@ RedfishResourceConsumeResource ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (ExpectedResponse, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (ExpectedResponse, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); @@ -177,6 +182,10 @@ RedfishResourceConsumeResource ( Private->Json =3D NULL; } =20 + if (PendingSettingUri !=3D NULL) { + FreePool (PendingSettingUri); + } + return Status; } =20 @@ -330,8 +339,12 @@ RedfishResourceCheck ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (&Response, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (&Response, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to check resource from: %s: %r\n", __= func__, Uri, Status)); diff --git a/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSy= stemDxe.c b/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSys= temDxe.c index 494bf59df..a58151f67 100644 --- a/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSystemDxe= .c +++ b/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSystemDxe= .c @@ -126,12 +126,13 @@ RedfishResourceConsumeResource ( // Check and see if "@Redfish.Settings" exist or not. // ZeroMem (&PendingSettingResponse, sizeof (REDFISH_RESPONSE)); - Status =3D GetPendingSettings ( - Private->RedfishService, - Response.Payload, - &PendingSettingResponse, - &PendingSettingUri - ); + PendingSettingUri =3D NULL; + Status =3D GetPendingSettings ( + Private->RedfishService, + Response.Payload, + &PendingSettingResponse, + &PendingSettingUri + ); if (!EFI_ERROR (Status)) { DEBUG ((REDFISH_DEBUG_TRACE, "%a: @Redfish.Settings found: %s\n", __fu= nc__, PendingSettingUri)); SetRedfishSettingsObjectsUri (Private->Uri, PendingSettingUri); @@ -152,8 +153,12 @@ RedfishResourceConsumeResource ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (ExpectedResponse, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (ExpectedResponse, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); @@ -178,6 +183,10 @@ RedfishResourceConsumeResource ( Private->Json =3D NULL; } =20 + if (PendingSettingUri !=3D NULL) { + FreePool (PendingSettingUri); + } + return Status; } =20 @@ -331,8 +340,12 @@ RedfishResourceCheck ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (&Response, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (&Response, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to check resource from: %s: %r\n", __= func__, Uri, Status)); diff --git a/RedfishClientPkg/Features/ComputerSystemCollectionDxe/Computer= SystemCollectionDxe.c b/RedfishClientPkg/Features/ComputerSystemCollectionD= xe/ComputerSystemCollectionDxe.c index 3deefa824..868bacf02 100644 --- a/RedfishClientPkg/Features/ComputerSystemCollectionDxe/ComputerSystemC= ollectionDxe.c +++ b/RedfishClientPkg/Features/ComputerSystemCollectionDxe/ComputerSystemC= ollectionDxe.c @@ -91,7 +91,7 @@ HandleResource ( =20 // // Check and see if target property exist or not even when collection me= mber exists. - // If not, we sill do provision. + // If not, we still do provision. // DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri)); Status =3D EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL); diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c b/Redf= ishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c index f2c0a7735..87ce62c2d 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c @@ -126,12 +126,13 @@ RedfishResourceConsumeResource ( // Check and see if "@Redfish.Settings" exist or not. // ZeroMem (&PendingSettingResponse, sizeof (REDFISH_RESPONSE)); - Status =3D GetPendingSettings ( - Private->RedfishService, - Response.Payload, - &PendingSettingResponse, - &PendingSettingUri - ); + PendingSettingUri =3D NULL; + Status =3D GetPendingSettings ( + Private->RedfishService, + Response.Payload, + &PendingSettingResponse, + &PendingSettingUri + ); if (!EFI_ERROR (Status)) { DEBUG ((REDFISH_DEBUG_TRACE, "%a: @Redfish.Settings found: %s\n", __fu= nc__, PendingSettingUri)); SetRedfishSettingsObjectsUri (Private->Uri, PendingSettingUri); @@ -151,8 +152,12 @@ RedfishResourceConsumeResource ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (ExpectedResponse, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (ExpectedResponse, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); @@ -174,6 +179,10 @@ RedfishResourceConsumeResource ( FreePool (Etag); } =20 + if (PendingSettingUri !=3D NULL) { + FreePool (PendingSettingUri); + } + return Status; } =20 @@ -327,8 +336,12 @@ RedfishResourceCheck ( // // Find etag in HTTP response header // - Etag =3D NULL; - GetHttpResponseEtag (&Response, &Etag); + Etag =3D NULL; + Status =3D GetHttpResponseEtag (&Response, &Etag); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", __fu= nc__)); + } + Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, failed to check resource from: %s: %r\n", __= func__, Uri, Status)); @@ -337,6 +350,10 @@ RedfishResourceCheck ( // // Release resource // + if (Etag !=3D NULL) { + FreePool (Etag); + } + RedfishHttpFreeResponse (&Response); Private->Payload =3D NULL; =20 diff --git a/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollection= Dxe.c b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c index 38f28f902..6bf7f6fc5 100644 --- a/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c +++ b/RedfishClientPkg/Features/MemoryCollectionDxe/MemoryCollectionDxe.c @@ -87,7 +87,7 @@ HandleResource ( =20 // // Check and see if target property exist or not even when collection me= mber exists. - // If not, we sill do provision. + // If not, we still do provision. // DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri)); Status =3D EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL); diff --git a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatu= reUtilityLib.c b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishF= eatureUtilityLib.c index 2cc079783..2add55921 100644 --- a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c @@ -1744,6 +1744,7 @@ RedfishFeatureGetUnifiedArrayTypeConfigureLang ( =20 /** Find "ETag" from either HTTP header or Redfish response. + It's caller's responsibility to release Etag by calling FreePool(). =20 @param[in] Response HTTP response @param[out] Etag String buffer to return ETag @@ -1814,6 +1815,7 @@ GetHttpResponseEtag ( =20 /** Find "Location" from either HTTP header or Redfish response. + It's caller's responsibility to release Location by calling FreePool(). =20 @param[in] Response HTTP response @param[out] Location String buffer to return Location --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117293): https://edk2.groups.io/g/devel/message/117293 Mute This Topic: https://groups.io/mt/105265012/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-