From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.73]) by mx.groups.io with SMTP id smtpd.web10.21767.1683272170049499871 for ; Fri, 05 May 2023 00:36:10 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=LCDX6+PC; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.243.73, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QTdOmKYa3Z7WFXEIInZlq3Vis8noIbNieNHFA3iJlixHsJDabgedsQDwon8D3jnrV8wpw5TVjOiqVMqEdVQ83wM0cCQHnH4zuqG+1icAWHSCZGzc6XfeT0gZ5dvFh7t2I8jnb83+TLmlOysR5WW0rwKwpy6USGmplPNmRvSqCmBXjWinlV9ubLnqAnl+A6gvDcq9sQEGjF4Sa0vxkEoM1vizJraTarQIZqbh9xe3oCUb5h4l8RqOTnxPccab+/vPkTT00njq7YMun1QImRQfDLyr/KjEnKlaleozRgCnurYepckzGlRKeILgCQVHAyljJoum99BPwy8TUa43xLfAeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fCE74nc3Z3rGR2Ujmusb9Nsym6qn4K3/acmZeOfTEoM=; b=ixCoXxVzsN8OCrzZRJe0d0GOnIwbm/wycZJfM2bI9j3PHonooVZNAESD9ryOwjQ2bUv6GAJ2moVezXLVg2kiGnHRrxVYCELjnZGqXgG5mLrr08PfhFfmvddjqQVVN4JoWr/NY+yRFG6dEhBXLwc4629Gb+fycSwg3fkPgG27wG6EofE6hjJw3vaqGeSrZ6Q38Wm8BVhomupLkY677qpWfo5emz5L+WRLUCiEFtCJ2PbfcGFB2ImdUgK56FFmXcYMgbsjN5QI5NkEKGjVEs/VfiGJiRvNZtzXaFC6q/KufHFrbTarkiKtfZg7WjsDafKqV/4t9DMjhQH1yz0sUpueZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fCE74nc3Z3rGR2Ujmusb9Nsym6qn4K3/acmZeOfTEoM=; b=LCDX6+PCegJBfBCxaZbfK/fgSqI8jHUtc7kVB0oHqMCqL7ltnLEAhArTJPWSA30BViPY1FMWFNvTpPgu5A94u+hj1e44Vk0jRIsL5RoCDNqrF8C0bqbzkTmHmMp3S1FnHairZnDxjIBou2B6DnyNLfJjlCHGMbUKThR58IUWNqM= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by BL1PR12MB5350.namprd12.prod.outlook.com (2603:10b6:208:31d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.27; Fri, 5 May 2023 07:36:06 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6363.027; Fri, 5 May 2023 07:36:06 +0000 From: "Chang, Abner" To: minhnampere , "devel@edk2.groups.io" CC: "patches@amperecomputing.com" , "nicklew@nvidia.com" , "igork@ami.com" , "nhi@os.amperecomputing.com" , "tinhnguyen@os.amperecomputing.com" , Vu Nguyen , Nick Ramirez Subject: Re: [PATCH V3 3/5] RedfishPkg: Create RestEx child on selected interface Thread-Topic: [PATCH V3 3/5] RedfishPkg: Create RestEx child on selected interface Thread-Index: AQHZfx1Yvo4mC5FLlk29Petn1cjza69LShzA Date: Fri, 5 May 2023 07:36:06 +0000 Message-ID: References: <20230505064600.1478461-1-minhnguyen1@os.amperecomputing.com> <20230505064600.1478461-4-minhnguyen1@os.amperecomputing.com> In-Reply-To: <20230505064600.1478461-4-minhnguyen1@os.amperecomputing.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-05-05T07:36:04Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=d069de7d-626b-415b-9421-04859e9be7f4; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|BL1PR12MB5350:EE_ x-ms-office365-filtering-correlation-id: cc4c7624-f84f-4672-778c-08db4d3b6300 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jFNOVe8SAeh7EZYzQUIK/z90U4WFG8x5LUBMVOV0w0R91/XgG2GIfQGdAlv/Ld+KCuiUid5fnPZP5icJgF9j2PHKzT4MwlUlySDnQ/SH99UUClnFLPxRpnEoSD0CrPOOnaXyd50GwPjBfxGQr4zJKs1RlWyB4ImJzlUzfTJqQcCdHnmVCnRq/kk+/Bis8QP9iiFNHAsKbPHw8rnMiF5+QfTsEBwhU+DuX+1Xq4n93MG6zMlW0S/o4Ry2NNVayTDOGhVnEI8+wNbu+BzR7nrPLdQ0KTFksUY/e4cA9yYJoUhhlUrV0XfALUEAf6JcEJ7qliZTaKFeQOtNoISqGREyQYNayvMngTnUdO06FZW7YK+1OQeaaYjWEXWEaKhxUPYIaa/LKIz3Ik0klIZ5E0pv7LZslBnQWni1GXYpYlBDEY+4r/CIn/mrivlzEXevUVtSaayVpk2/weYF+MwOOhk2JcSKugXRWNIncG0QNOxZD+l2aKThA9l+KMwl4XRtEX+yNEUrT7rTUt0xRmFjm7Zw1ajuNBAaSWXfGPglMV8/zsyl+iiu0yMjF7eQOz34KNWbJwsZ0Ol3IJup0kLHT+16dpL+STagSMad2YokkoY7KcwVEsEyFLlikQAXsjb7PIWT x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(136003)(346002)(366004)(396003)(39860400002)(376002)(451199021)(33656002)(86362001)(71200400001)(110136005)(316002)(54906003)(64756008)(4326008)(76116006)(66446008)(66476007)(66946007)(7696005)(66556008)(478600001)(41300700001)(55016003)(5660300002)(52536014)(8676002)(8936002)(2906002)(38070700005)(38100700002)(122000001)(186003)(9686003)(53546011)(6506007)(26005)(83380400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?h9cpf6CG3BxxkFzYy8iiz45MUUTMpGd0yBjlHLFRykrzqcxZfPt6YiM6tYQs?= =?us-ascii?Q?z6UrbVSfKN6WaYNotRq/+hJzbALqGwtHE4jw3GlJBEpq1uYAXXimJ8ZUOyTE?= =?us-ascii?Q?wIVeImmDg7ZMrgOgWtFjBuGnO7ACysuccHPXfPYyd54JhDogmzFYLjgsq4pB?= =?us-ascii?Q?QatICeD/vD/eSuPocfGel/KsSFFkUQfxH1uSfkRdRAt8ajBn6GbMpV9idOcb?= =?us-ascii?Q?hwpGkuZfdA85cu1srdD5NMHDSzk5V6plPkRfZAGD+BOxmCi5GF2Jb+OBqTji?= =?us-ascii?Q?0aM3qvoG9HkWehcG2bAmErelq92cns5G5HOygFxnNE+8KpL2hSr9ibvSHbxO?= =?us-ascii?Q?D9c8u0yn8XlHp6/7N4jda+52wVwR9JYqm3ypZa7AfpPsMAoLGqKdkQKY+RwJ?= =?us-ascii?Q?APb9crXrPceYBBeIFowpCMzUNfsvoVDYn7UemT6/XnmM5vcQzV09svg5RTix?= =?us-ascii?Q?G6pFwvmDIrUaQeUrP9wp4bwaxLoYqRoxoQDWLwqJqoWzB25mZ6WrMIwQBydT?= =?us-ascii?Q?2Kdo2Ibn8y1ZzM6mhNTQ5/U/vpK85zlS3fi+0pRltacjs+YsldGx0peEcNtI?= =?us-ascii?Q?kjp4m8CRUXlFoWaXFDoyI0UQE2D1f3GZsIs6YDxMTfGVRR+j0qBDE3QgYQF4?= =?us-ascii?Q?+fmiLGmdDXM0peDX/wefYT85sDKM0NqoWVjVVcETkZhZuGvl1Sp/5FORCHWr?= =?us-ascii?Q?l1bKEKie0MHMaXFWuB7UF08BpSjnA2UFlb8Y4BlrgdHqbvPd5Ebn5Gcbr6QX?= =?us-ascii?Q?31a7VTG05NMHbIKCSIUos+bAh4t6TxGiFT8idI2UNLe1tpTlTzSfGRYLbZUa?= =?us-ascii?Q?14JZq/pvJeHUl356a3QNFtJXIy1D5zWXFBa743IkzWm/Mz3zEN3sPbx35ZF2?= =?us-ascii?Q?sUEhgsKGryT8zxvDOuTFPswaKr8qDsTmcPoKKYl/A4hexW92+xJubtg8xu2C?= =?us-ascii?Q?j+IwLR+UDw12S/hFGiwxyMMSJsOE5FMLYmBjImVRT7y82paWejw/LB6uTULk?= =?us-ascii?Q?J9mlRcyR/pcmwBwUcqrMzmyaD7vl5clmMCRICU0g+Xe52in47Mk8yAkq+Mv6?= =?us-ascii?Q?ys8z1gEG9KfwHXV+OKnEpONFQZTlY3f1Kvww3ng97ZQ2w1XCEznS1fazbDlW?= =?us-ascii?Q?pstcyktL9UU9iIQSugWRwrw8xIFvm0LwnvqH0B5T2NPv0pQYAbleIRdRrydS?= =?us-ascii?Q?2AVyC13N8duT/zqyx9/x5A7y6GusiP6MnGvtT0LyhpR9WxNqz+qDTgszvEx/?= =?us-ascii?Q?4qITVywuJOCoNd8zKqssZZAB4IGJTuvzh2CpSsKu9RO11kI4lD33n02kXq55?= =?us-ascii?Q?NVx0/iNv5hty79X/3dzTT6PNcO88+Yn8iV/uSzNgfxj+9N/0H8Zyr7AyCx95?= =?us-ascii?Q?XvjSbZH8mR3oz0dzed9qLJK9Ef/iWCAv3m6PZH0wlllUY8ZrzVkkI/9T6p65?= =?us-ascii?Q?ExrhGn7Bc+LsQ7RrXdYRrbUYV8msakHFVy1ExBKxholZlPzBc/Xl1p+xrw27?= =?us-ascii?Q?S+ws/sjqZPj+0Ovw/VpieW3s3DtW5660P8f/3ouc/LOGtIqn0SJ4BbeuzwGg?= =?us-ascii?Q?Yh+YnhjtKtzp4rOcy14kgYyRzAIg5uXY4rAgsQXN?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc4c7624-f84f-4672-778c-08db4d3b6300 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 May 2023 07:36:06.2057 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +dkvQr6FdmtvPA5etYIEN68Is2STtWYc0Kem6+GTkCGeR2lhUjV9XX8v5Xvn1n6gIcWrQcrKjlWRNIJBQ3m3Kg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5350 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [AMD Official Use Only - General] Thanks Minh, Reviewed-by: Abner Chang > -----Original Message----- > From: minhnampere > Sent: Friday, May 5, 2023 2:46 PM > To: devel@edk2.groups.io > Cc: patches@amperecomputing.com; Chang, Abner > ; nicklew@nvidia.com; igork@ami.com; > nhi@os.amperecomputing.com; tinhnguyen@os.amperecomputing.com; Vu > Nguyen ; Minh Nguyen > ; Nick Ramirez > > Subject: [PATCH V3 3/5] RedfishPkg: Create RestEx child on selected > interface >=20 > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. >=20 >=20 > From: Vu Nguyen >=20 > When a MAC address matching interface is found, a RestEx child will be > created to provide the Redfish communication on that interface. > Currently, It will try to locate all RestEx binding services and choose t= he first > satisfied instance without taking care about current selected interface. = This > might raise an issue on the system with multiple network devices that the > RestEx child was installed on wrong interface. >=20 > Signed-off-by: Minh Nguyen > Cc: Abner Chang > Cc: Igor Kulchytskyy > Cc: Nick Ramirez > --- > RedfishPkg/Include/Library/RestExLib.h | 3 + > RedfishPkg/Library/DxeRestExLib/DxeRestExLib.c | 153 ++++++++-------= --- > -- > RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c | 1 + > 3 files changed, 63 insertions(+), 94 deletions(-) >=20 > diff --git a/RedfishPkg/Include/Library/RestExLib.h > b/RedfishPkg/Include/Library/RestExLib.h > index bc4e4ca6caa7..2c32c3684cf4 100644 > --- a/RedfishPkg/Include/Library/RestExLib.h > +++ b/RedfishPkg/Include/Library/RestExLib.h > @@ -2,6 +2,7 @@ > This library provides help functions for REST EX Protocol. >=20 > (C) Copyright 2020 Hewlett Packard Enterprise Development LP
> + Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > @@ -20,6 +21,7 @@ > This function allows the caller to create child handle for specific > REST server. >=20 > + @param[in] Controller The controller handle used of selecte= d > interface. > @param[in] Image The image handle used to open service= . > @param[in] AccessMode Access mode of REST server. > @param[in] ConfigType Underlying configuration to communica= te > with REST server. > @@ -32,6 +34,7 @@ > **/ > EFI_STATUS > RestExLibCreateChild ( > + IN EFI_HANDLE Controller, > IN EFI_HANDLE Image, > IN EFI_REST_EX_SERVICE_ACCESS_MODE AccessMode, > IN EFI_REST_EX_CONFIG_TYPE ConfigType, > diff --git a/RedfishPkg/Library/DxeRestExLib/DxeRestExLib.c > b/RedfishPkg/Library/DxeRestExLib/DxeRestExLib.c > index d9acad24dec1..0b3ae2755e86 100644 > --- a/RedfishPkg/Library/DxeRestExLib/DxeRestExLib.c > +++ b/RedfishPkg/Library/DxeRestExLib/DxeRestExLib.c > @@ -2,6 +2,7 @@ > This library provides help functions for REST EX Protocol. >=20 > (C) Copyright 2020 Hewlett Packard Enterprise Development LP
> + Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > @@ -9,6 +10,7 @@ >=20 > #include > #include > +#include > #include #include > #include > @@ -21,6 +23,7 @@ > This function allows the caller to create child handle for specific > REST server. >=20 > + @param[in] Controller The controller handle used of selecte= d > interface. > @param[in] Image The image handle used to open service= . > @param[in] AccessMode Access mode of REST server. > @param[in] ConfigType Underlying configuration to communica= te > with REST server. > @@ -33,6 +36,7 @@ > **/ > EFI_STATUS > RestExLibCreateChild ( > + IN EFI_HANDLE Controller, > IN EFI_HANDLE Image, > IN EFI_REST_EX_SERVICE_ACCESS_MODE AccessMode, > IN EFI_REST_EX_CONFIG_TYPE ConfigType, > @@ -41,8 +45,6 @@ RestExLibCreateChild ( > ) > { > EFI_STATUS Status; > - UINTN NoBuffer; > - EFI_HANDLE *Handle; > EFI_HANDLE ChildHandle; > EFI_REST_EX_PROTOCOL *RestEx; > EFI_REST_EX_SERVICE_INFO *RestExServiceInfo; @@ -59,116 +61,79 @@ > RestExLibCreateChild ( > } >=20 > *ChildInstanceHandle =3D NULL; > - // > - // Locate all REST EX binding service. > - // > - Handle =3D NULL; > - NoBuffer =3D 0; > - Status =3D gBS->LocateHandleBuffer ( > - ByProtocol, > - &gEfiRestExServiceBindingProtocolGuid, > - NULL, > - &NoBuffer, > - &Handle > - ); > - if (EFI_ERROR (Status) && (Status !=3D EFI_BUFFER_TOO_SMALL)) { > + > + ChildHandle =3D NULL; > + Status =3D NetLibCreateServiceChild ( > + Controller, > + Image, > + &gEfiRestExServiceBindingProtocolGuid, > + &ChildHandle > + ); > + if (EFI_ERROR (Status)) { > + DEBUG (( > + DEBUG_ERROR, > + "%a: Failed to create service child - %r \n", > + __func__, > + Status > + )); > return Status; > } > - > - Handle =3D (EFI_HANDLE *)AllocateZeroPool (sizeof (EFI_HANDLE) * > NoBuffer); > - if (Handle =3D=3D NULL) { > - return EFI_OUT_OF_RESOURCES; > - } > - > - Status =3D gBS->LocateHandleBuffer ( > - ByProtocol, > - &gEfiRestExServiceBindingProtocolGuid, > + Status =3D gBS->OpenProtocol ( > + ChildHandle, > + &gEfiRestExProtocolGuid, > + (VOID **)&RestEx, > + Image, > NULL, > - &NoBuffer, > - &Handle > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > ); > if (EFI_ERROR (Status)) { > - FreePool (Handle); > - return Status; > + goto ON_ERROR; > } >=20 > // > - // Search for the proper REST EX instance. > + // Get the information of REST service provided by this EFI REST EX > + driver > // > - while (NoBuffer !=3D 0) { > - ChildHandle =3D NULL; > - Status =3D NetLibCreateServiceChild ( > - *(Handle + (NoBuffer - 1)), > - Image, > - &gEfiRestExServiceBindingProtocolGuid, > - &ChildHandle > - ); > - if (!EFI_ERROR (Status)) { > - Status =3D gBS->OpenProtocol ( > - ChildHandle, > - &gEfiRestExProtocolGuid, > - (VOID **)&RestEx, > - Image, > - NULL, > - EFI_OPEN_PROTOCOL_GET_PROTOCOL > - ); > - if (EFI_ERROR (Status)) { > - goto ON_ERROR; > - } > - > - // > - // Get the information of REST service provided by this EFI REST E= X driver > - // > - Status =3D RestEx->GetService ( > - RestEx, > - &RestExServiceInfo > - ); > - if (EFI_ERROR (Status)) { > - goto ON_ERROR; > - } > - > - // > - // Check REST EX property. > - // > - switch (ConfigType) { > - case EfiRestExConfigHttp: > - LenOfConfig =3D sizeof (EFI_REST_EX_HTTP_CONFIG_DATA); > - break; > - > - case EfiRestExConfigUnspecific: > - LenOfConfig =3D REST_EX_CONFIG_DATA_LEN_UNKNOWN; > - break; > + Status =3D RestEx->GetService ( > + RestEx, > + &RestExServiceInfo > + ); > + if (EFI_ERROR (Status)) { > + goto ON_ERROR; > + } > + // > + // Check REST EX property. > + // > + switch (ConfigType) { > + case EfiRestExConfigHttp: > + LenOfConfig =3D sizeof (EFI_REST_EX_HTTP_CONFIG_DATA); > + break; >=20 > - default: > - goto ON_ERROR; > - } > + case EfiRestExConfigUnspecific: > + LenOfConfig =3D REST_EX_CONFIG_DATA_LEN_UNKNOWN; > + break; >=20 > - if ((RestExServiceInfo- > >EfiRestExServiceInfoV10.RestServiceAccessMode !=3D AccessMode) || > - (RestExServiceInfo->EfiRestExServiceInfoV10.RestServiceType != =3D > ServiceType) || > - (RestExServiceInfo->EfiRestExServiceInfoV10.RestExConfigType != =3D > ConfigType) || > - ((LenOfConfig !=3D REST_EX_CONFIG_DATA_LEN_UNKNOWN) && > (RestExServiceInfo->EfiRestExServiceInfoV10.RestExConfigDataLength !=3D > LenOfConfig))) > - { > - goto ON_ERROR; > - } > - } > + default: > + goto ON_ERROR; > + } > + if (RestExServiceInfo->EfiRestExServiceInfoV10.RestServiceAccessMode != =3D > AccessMode || > + RestExServiceInfo->EfiRestExServiceInfoV10.RestServiceType !=3D > ServiceType || > + RestExServiceInfo->EfiRestExServiceInfoV10.RestExConfigType !=3D > ConfigType || > + ((LenOfConfig !=3D REST_EX_CONFIG_DATA_LEN_UNKNOWN) && > (RestExServiceInfo->EfiRestExServiceInfoV10.RestExConfigDataLength !=3D > LenOfConfig))) { > + goto ON_ERROR; > + } >=20 > - // > - // This is proper REST EX instance. > - // > - *ChildInstanceHandle =3D ChildHandle; > - FreePool (Handle); > - return EFI_SUCCESS; > + // > + // This is proper REST EX instance. > + // > + *ChildInstanceHandle =3D ChildHandle; > + return EFI_SUCCESS; >=20 > ON_ERROR:; > NetLibDestroyServiceChild ( > - *(Handle + (NoBuffer - 1)), > + Controller, > Image, > &gEfiRestExServiceBindingProtocolGuid, > ChildHandle > ); > - NoBuffer--; > - } > - > - FreePool (Handle); > return EFI_NOT_FOUND; > } > diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > index 14702748813b..0b86a7b5cc4b 100644 > --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > @@ -87,6 +87,7 @@ CreateRestExInstance ( > EFI_STATUS Status; >=20 > Status =3D RestExLibCreateChild ( > + Instance->NetworkInterface->OpenDriverControllerHandle, > Instance->Owner, > FixedPcdGetBool (PcdRedfishDiscoverAccessModeInBand) ? > EfiRestExServiceInBandAccess : EfiRestExServiceOutOfBandAccess, > EfiRestExConfigHttp, > -- > 2.39.0