On Wed, Feb 21, 2024 at 5:34 AM Chang, Abner <abner.ch...@amd.com> wrote: > > [AMD Official Use Only - General] > > > -----Original Message----- > > From: Mike Maslenkin <mike.maslen...@gmail.com> > > Sent: Wednesday, February 21, 2024 8:13 AM > > To: devel@edk2.groups.io > > Cc: Mike Maslenkin <mike.maslen...@gmail.com>; Nickle Wang > > <nick...@nvidia.com>; Chang, Abner <abner.ch...@amd.com>; Igor > > Kulchytskyy <ig...@ami.com> > > Subject: [PATCH 2/4] RedfishClientPkg: refine > > RedfishExternalResourceResourceFeatureCallback > > > > Caution: This message originated from an External Source. Use proper caution > > when opening attachments, clicking links, or responding. > > > > > > Use local variable for CollectionUri passed to HandleResource() to avoid > > problems in case of Private->Uri is overriden down the call stack. > > > > Suggested-by: Nickle Wang <nick...@nvidia.com> > > Cc: Abner Chang <abner.ch...@amd.com> > > Cc: Nickle Wang <nick...@nvidia.com> > > Cc: Igor Kulchytskyy <ig...@ami.com> > > Signed-off-by: Mike Maslenkin <mike.maslen...@gmail.com> > > --- > > RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c | 11 ++++++----- > > 1 file changed, 6 insertions(+), 5 deletions(-) > > > > diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > > b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > > index f40f2d85af80..396ec22969b5 100644 > > --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > > +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > > @@ -670,6 +670,7 @@ RedfishExternalResourceResourceFeatureCallback ( > > REDFISH_SERVICE RedfishService; > > > > REDFISH_RESOURCE_COMMON_PRIVATE *Private; > > > > EFI_STRING ResourceUri; > > > > + EFI_STRING CollectionUri; > > > > > > > > if (FeatureAction != CallbackActionStartOperation) { > > > > return EFI_UNSUPPORTED; > > > > @@ -707,19 +708,19 @@ RedfishExternalResourceResourceFeatureCallback > > ( > > // > > > > // Initialize collection path > > > > // > > > > - Private->Uri = RedfishGetUri (ResourceUri); > > > > - if (Private->Uri == NULL) { > > > > + CollectionUri = RedfishGetUri (ResourceUri); > > I would like to leave this to Nickle to review if there is any impacts of not > initializing Private->Uri. Is Private->Uri referred in the later process? > Apart from above, the naming of CollectionUri is not proper as BiosDxe is not > a collection driver. I think the comment of " // Initialize collection path" > is a copy & paste error. > > Thanks > Abner >
Good question about Private->Uri. It looks like it's safe not to initialize Private->Uri here, because it is being initialized in every function of EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL. That was exactly my previous concern. After this patch only callee from EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL are dealing with Private->Uri. So it could be dropped in favor of additional parameter. I mean currently EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL function initializes Private->Uri explicitly, then it is used in function implementing actual implementation of EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL. For example: RedfishResourceConsumeResource->RedfishConsumeResourceCommon, RedfishResourceConsumeResource->RedfishConsumeResourceCommon, RedfishResourceProvisioningResource->RedfishProvisioningResourceCommon->{ProvisioningBiosExistResource,ProvisioningBiosResources}, RedfishResourceCheck->RedfishCheckResourceCommon, RedfishResourceUpdate->RedfishUpdateResourceCommon, RedfishResourceIdentify->RedfishIdentifyResourceCommon. So, in all this cases Private->Uri can be passed as a function argument down to call stack. And HandleResource() mentioned above calls functions from EdkIIRedfishResourceConfigLib that in turn calls EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL implementation, where Private->Uri is being initialized. See previous paragraph. I don't think I missed anything. Regards, Mike. > > > > + if (CollectionUri == NULL) { > > > > ASSERT (FALSE); > > > > FreePool (ResourceUri); > > > > return EFI_OUT_OF_RESOURCES; > > > > } > > > > > > > > - Status = HandleResource (Private, Private->Uri); > > > > + Status = HandleResource (Private, CollectionUri); > > > > if (EFI_ERROR (Status)) { > > > > - DEBUG ((DEBUG_ERROR, "%a, process external resource: %a failed: %r\n", > > __func__, Private->Uri, Status)); > > > > + DEBUG ((DEBUG_ERROR, "%a, process external resource: %s failed: %r\n", > > __func__, CollectionUri, Status)); > > > > } > > > > > > > > - FreePool (Private->Uri); > > > > + FreePool (CollectionUri); > > > > FreePool (ResourceUri); > > > > return Status; > > > > } > > > > -- > > 2.32.0 (Apple Git-132) > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115732): https://edk2.groups.io/g/devel/message/115732 Mute This Topic: https://groups.io/mt/104479572/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-