Hi Zhi, Thanks for the update. One minor comment on 'STATIC' should be 'static'.
We no longer depend on macros to redefine 'STATIC' and it is better to just used the standard C 'static' form. With that change: Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com> Mike > -----Original Message----- > From: Jin, Zhi <zhi....@intel.com> > Sent: Monday, January 22, 2024 1:53 AM > To: devel@edk2.groups.io > Cc: Jin, Zhi <zhi....@intel.com>; Liming Gao <gaolim...@byosoft.com.cn>; > Ni, Ray <ray...@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com> > Subject: [PATCH v2 1/2] MdeModulePkg: Remove the handle validation check > in CoreGetProtocolInterface > > CoreGetProtocolInterface() is called by CoreOpenProtocol(), > CoreCloseProtocol() and CoreOpenProtocolInformation(). > Before CoreOpenProtocol() calls CoreGetProtocolInterface(), the input > parameter UserHandle has been already checked for validation. So does > CoreCloseProtocol(). > Removing the handle validation check in CoreGetProtocolInterface() > could improve the performance, as CoreOpenProtocol() is called very > frequently. > To ensure the assumption that the caller of CoreGetProtocolInterface() > must pass in a valid UserHandle that is checked with > CoreValidateHandle(), > add the parameter check in CoreOpenProtocolInformation(), and declare > CoreGetProtocolInterface() as static. > > v1 -> v2: > 1. Update the description of UserHandle to state that the caller > must pass in a valid UserHandle that is checked with > CoreValidateHandle(). > 2. Declare CoreGetProtocolInterface() as static. > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Ray Ni <ray...@intel.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Signed-off-by: Zhi Jin <zhi....@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c > b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 51e5b5d3b3..24e4fbf5f3 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -918,28 +918,25 @@ CoreUninstallMultipleProtocolInterfaces ( > Locate a certain GUID protocol interface in a Handle's protocols. > > @param UserHandle The handle to obtain the protocol > interface on > + The caller must pass in a valid > UserHandle that > + is checked with CoreValidateHandle(). > @param Protocol The GUID of the protocol > > @return The requested protocol interface for the handle > > **/ > +STATIC > PROTOCOL_INTERFACE * > CoreGetProtocolInterface ( > IN EFI_HANDLE UserHandle, > IN EFI_GUID *Protocol > ) > { > - EFI_STATUS Status; > PROTOCOL_ENTRY *ProtEntry; > PROTOCOL_INTERFACE *Prot; > IHANDLE *Handle; > LIST_ENTRY *Link; > > - Status = CoreValidateHandle (UserHandle); > - if (EFI_ERROR (Status)) { > - return NULL; > - } > - > Handle = (IHANDLE *)UserHandle; > > // > @@ -1392,6 +1389,15 @@ CoreOpenProtocolInformation ( > // > CoreAcquireProtocolLock (); > > + // > + // Check for invalid UserHandle > + // > + Status = CoreValidateHandle (UserHandle); > + if (EFI_ERROR (Status)) { > + Status = EFI_NOT_FOUND; > + goto Done; > + } > + > // > // Look at each protocol interface for a match > // > -- > 2.39.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114234): https://edk2.groups.io/g/devel/message/114234 Mute This Topic: https://groups.io/mt/103883257/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-