diff --git a/MinPlatformPkg/Test/Library/TestPointCheckLib/DxeCheckAcpiMadt.c b/MinPlatformPkg/Test/Library/TestPointCheckLib/DxeCheckAcpiMadt.c
index 7e29b47a0b..04cc6f963a 100644
--- a/MinPlatformPkg/Test/Library/TestPointCheckLib/DxeCheckAcpiMadt.c
+++ b/MinPlatformPkg/Test/Library/TestPointCheckLib/DxeCheckAcpiMadt.c
@@ -1,6 +1,7 @@
/** @file
Copyright (c) 2017, Intel Corporation. All rights reserved.
+Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -235,8 +236,9 @@ DumpAcpiMadt (
DEBUG ((DEBUG_INFO, "\n"));
break;
}
- ApicStructHeader = (APIC_STRUCT_HEADER *)((UINT8 *)ApicStructHeader + ApicStructHeader->Length);
+ // Update MadtLen first to avoid the dead loop and system hang
MadtLen -= ApicStructHeader->Length;
+ ApicStructHeader = (APIC_STRUCT_HEADER *)((UINT8 *)ApicStructHeader + ApicStructHeader->Length);
}
}
@@ -324,8 +326,9 @@ CheckAcpiMadt (
default:
break;
}
- ApicStructHeader = (APIC_STRUCT_HEADER *)((UINT8 *)ApicStructHeader + ApicStructHeader->Length);
+ // Update MadtLen first to avoid the dead loop and system hang
MadtLen -= ApicStructHeader->Length;
+ ApicStructHeader = (APIC_STRUCT_HEADER *)((UINT8 *)ApicStructHeader + ApicStructHeader->Length);
}
return EFI_SUCCESS;
}
\ No newline at end of file