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. Meanwhile, need to make it the caller's responsibility to check the parameters, and add the check in CoreOpenProtocolInformation().
Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Ray Ni <ray...@intel.com> Signed-off-by: Zhi Jin <zhi....@intel.com> --- MdeModulePkg/Core/Dxe/Hand/Handle.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c index 51e5b5d3b3..a0d2d03267 100644 --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c @@ -916,6 +916,8 @@ CoreUninstallMultipleProtocolInterfaces ( /** Locate a certain GUID protocol interface in a Handle's protocols. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. @param UserHandle The handle to obtain the protocol interface on @param Protocol The GUID of the protocol @@ -929,17 +931,11 @@ CoreGetProtocolInterface ( 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 +1388,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 (#113930): https://edk2.groups.io/g/devel/message/113930 Mute This Topic: https://groups.io/mt/103781273/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-