diff options
-rw-r--r-- | PerformancePkg/Dp_App/DpTrace.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/PerformancePkg/Dp_App/DpTrace.c b/PerformancePkg/Dp_App/DpTrace.c index 593c269f72..ca71b62517 100644 --- a/PerformancePkg/Dp_App/DpTrace.c +++ b/PerformancePkg/Dp_App/DpTrace.c @@ -50,7 +50,7 @@ GatherStatistics( MEASUREMENT_RECORD Measurement;
UINT64 Duration;
UINTN LogEntryKey;
- UINTN TIndex;
+ INTN TIndex;
LogEntryKey = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
@@ -143,11 +143,14 @@ DumpAllTrace( // Get Handle information
//
Size = 0;
- HandleBuffer = NULL;
+ HandleBuffer = &TempHandle;
Status = gBS->LocateHandle (AllHandles, NULL, NULL, &Size, &TempHandle);
if (Status == EFI_BUFFER_TOO_SMALL) {
HandleBuffer = AllocatePool (Size);
ASSERT (HandleBuffer != NULL);
+ if (HandleBuffer == NULL) {
+ return;
+ }
Status = gBS->LocateHandle (AllHandles, NULL, NULL, &Size, HandleBuffer);
}
if (EFI_ERROR (Status)) {
@@ -222,7 +225,9 @@ DumpAllTrace( );
}
}
- FreePool (HandleBuffer);
+ if (HandleBuffer != &TempHandle) {
+ FreePool (HandleBuffer);
+ }
}
/** Gather and print Raw Trace Records.
@@ -457,11 +462,14 @@ ProcessHandles( (StringPtr == NULL) ? ALit_UNKNOWN: StringPtr);
Size = 0;
- HandleBuffer = NULL;
+ HandleBuffer = &TempHandle;
Status = gBS->LocateHandle (AllHandles, NULL, NULL, &Size, &TempHandle);
if (Status == EFI_BUFFER_TOO_SMALL) {
HandleBuffer = AllocatePool (Size);
ASSERT (HandleBuffer != NULL);
+ if (HandleBuffer == NULL) {
+ return;
+ }
Status = gBS->LocateHandle (AllHandles, NULL, NULL, &Size, HandleBuffer);
}
if (EFI_ERROR (Status)) {
@@ -520,7 +528,9 @@ ProcessHandles( }
}
}
- FreePool (HandleBuffer);
+ if (HandleBuffer != &TempHandle) {
+ FreePool (HandleBuffer);
+ }
return Status;
}
|