From cc6d10c9708592d42aad38c8b6a00bbf1814b701 Mon Sep 17 00:00:00 2001 From: Abdul Lateef Attar Date: Mon, 22 Apr 2024 07:03:53 -0700 Subject: [PATCH] MinPlatformPkg/Test: Fix DumpAcpiMadt infinite loop Update the MadtLen varaible before the next record is read, to void infinite loop. Cc: Chasel Chiu Reviewed-by: Nate DeSimone Cc: Liming Gao Cc: Eric Dong Signed-off-by: Abdul Lateef Attar --- .../Test/Library/TestPointCheckLib/DxeCheckAcpiMadt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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