]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
DynamicTablesPkg: Fix Proc node length assignment
[mirror_edk2.git] / DynamicTablesPkg / Library / Acpi / Arm / AcpiPpttLibArm / PpttGenerator.c
index 9e42eee9b75bb330833b0f56c98947563d9eb821..40699ce113caa8530c89ac20562cf5abda26b88e 100644 (file)
@@ -504,6 +504,7 @@ AddProcHierarchyNodes (
 \r
   PPTT_NODE_INDEXER                     * ProcNodeIterator;\r
   UINT32                                  NodeCount;\r
+  UINT32                                  Length;\r
 \r
   ASSERT (\r
     (Generator != NULL) &&\r
@@ -539,8 +540,8 @@ AddProcHierarchyNodes (
     // imposed on the Processor Hierarchy node by the specification.\r
     // Note: The length field is 8 bit wide while the number of private\r
     // resource field is 32 bit wide.\r
-    if ((sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR) +\r
-        (ProcInfoNode->NoOfPrivateResources * sizeof (UINT32))) > MAX_UINT8) {\r
+    Length = GetProcHierarchyNodeSize (ProcInfoNode);\r
+    if (Length > MAX_UINT8) {\r
       Status = EFI_INVALID_PARAMETER;\r
       DEBUG ((\r
         DEBUG_ERROR,\r
@@ -556,7 +557,7 @@ AddProcHierarchyNodes (
 \r
     // Populate the node header\r
     ProcStruct->Type = EFI_ACPI_6_3_PPTT_TYPE_PROCESSOR;\r
-    ProcStruct->Length = GetProcHierarchyNodeSize (ProcInfoNode);\r
+    ProcStruct->Length = (UINT8)Length;\r
     ProcStruct->Reserved[0] = EFI_ACPI_RESERVED_BYTE;\r
     ProcStruct->Reserved[1] = EFI_ACPI_RESERVED_BYTE;\r
 \r