diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c index 696aa6673e..90053e7676 100644 --- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c +++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c @@ -88,6 +88,7 @@ InternalSearchForGaugeEntry ( ) { UINT32 Index; + UINT32 Index2; UINT32 NumberOfEntries; GAUGE_DATA_ENTRY_EX *GaugeEntryExArray; @@ -101,13 +102,16 @@ InternalSearchForGaugeEntry ( NumberOfEntries = mGaugeData->NumberOfEntries; GaugeEntryExArray = (GAUGE_DATA_ENTRY_EX *) (mGaugeData + 1); + Index2 = 0; + for (Index = 0; Index < NumberOfEntries; Index++) { - if ((GaugeEntryExArray[Index].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && - AsciiStrnCmp (GaugeEntryExArray[Index].Token, Token, DXE_PERFORMANCE_STRING_LENGTH) == 0 && - AsciiStrnCmp (GaugeEntryExArray[Index].Module, Module, DXE_PERFORMANCE_STRING_LENGTH) == 0 && - (GaugeEntryExArray[Index].Identifier == Identifier) && - GaugeEntryExArray[Index].EndTimeStamp == 0 - ) { + Index2 = NumberOfEntries - 1 - Index; + if (GaugeEntryExArray[Index2].EndTimeStamp == 0 && + (GaugeEntryExArray[Index2].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && + AsciiStrnCmp (GaugeEntryExArray[Index2].Token, Token, DXE_PERFORMANCE_STRING_LENGTH) == 0 && + AsciiStrnCmp (GaugeEntryExArray[Index2].Module, Module, DXE_PERFORMANCE_STRING_LENGTH) == 0 && + (GaugeEntryExArray[Index2].Identifier == Identifier)) { + Index = Index2; break; } } diff --git a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c index 7a2d3da0ec..60451eefdf 100644 --- a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c +++ b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c @@ -113,6 +113,7 @@ InternalSearchForLogEntry ( ) { UINT32 Index; + UINT32 Index2; UINT32 NumberOfEntries; PEI_PERFORMANCE_LOG_ENTRY *LogEntryArray; @@ -126,13 +127,16 @@ InternalSearchForLogEntry ( NumberOfEntries = PeiPerformanceLog->NumberOfEntries; LogEntryArray = (PEI_PERFORMANCE_LOG_ENTRY *) (PeiPerformanceLog + 1); + Index2 = 0; + for (Index = 0; Index < NumberOfEntries; Index++) { - if ((LogEntryArray[Index].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && - AsciiStrnCmp (LogEntryArray[Index].Token, Token, PEI_PERFORMANCE_STRING_LENGTH) == 0 && - AsciiStrnCmp (LogEntryArray[Index].Module, Module, PEI_PERFORMANCE_STRING_LENGTH) == 0 && - (PeiPerformanceIdArray[Index] == Identifier) && - LogEntryArray[Index].EndTimeStamp == 0 - ) { + Index2 = NumberOfEntries - 1 - Index; + if (LogEntryArray[Index2].EndTimeStamp == 0 && + (LogEntryArray[Index2].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && + AsciiStrnCmp (LogEntryArray[Index2].Token, Token, PEI_PERFORMANCE_STRING_LENGTH) == 0 && + AsciiStrnCmp (LogEntryArray[Index2].Module, Module, PEI_PERFORMANCE_STRING_LENGTH) == 0 && + (PeiPerformanceIdArray[Index2] == Identifier)) { + Index = Index2; break; } } diff --git a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.c b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.c index ca953df932..214d044bcb 100644 --- a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.c +++ b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.c @@ -93,6 +93,7 @@ SmmSearchForGaugeEntry ( ) { UINT32 Index; + UINT32 Index2; UINT32 NumberOfEntries; GAUGE_DATA_ENTRY_EX *GaugeEntryExArray; @@ -106,12 +107,16 @@ SmmSearchForGaugeEntry ( NumberOfEntries = mGaugeData->NumberOfEntries; GaugeEntryExArray = (GAUGE_DATA_ENTRY_EX *) (mGaugeData + 1); + Index2 = 0; + for (Index = 0; Index < NumberOfEntries; Index++) { - if ((GaugeEntryExArray[Index].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && - AsciiStrnCmp (GaugeEntryExArray[Index].Token, Token, SMM_PERFORMANCE_STRING_LENGTH) == 0 && - AsciiStrnCmp (GaugeEntryExArray[Index].Module, Module, SMM_PERFORMANCE_STRING_LENGTH) == 0 && - (GaugeEntryExArray[Index].Identifier == Identifier) && - GaugeEntryExArray[Index].EndTimeStamp == 0) { + Index2 = NumberOfEntries - 1 - Index; + if (GaugeEntryExArray[Index2].EndTimeStamp == 0 && + (GaugeEntryExArray[Index2].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) && + AsciiStrnCmp (GaugeEntryExArray[Index2].Token, Token, SMM_PERFORMANCE_STRING_LENGTH) == 0 && + AsciiStrnCmp (GaugeEntryExArray[Index2].Module, Module, SMM_PERFORMANCE_STRING_LENGTH) == 0 && + (GaugeEntryExArray[Index2].Identifier == Identifier)) { + Index = Index2; break; } }