DynamicTablesPkg: Fix Proc node length assignment
The length field for the Processor Hierarchy node structure is 8-bit wide while the number of private resource field is 32-bit wide. Therefore, the GetProcHierarchyNodeSize() returns the size as a 32-bit value. The VS2017 compiler reports 'warning C4244: '=': conversion from 'UINT32' to 'UINT8', possible loss of data' while assigning the length field of the Processor Hierarchy node structure. To fix this, a type cast is added. In addition, there is a check to ensure that the Processor Hierarchy node size does not exceed MAX_UINT8. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
This commit is contained in:
parent
869f234140
commit
96bb6704e0
|
@ -504,6 +504,7 @@ AddProcHierarchyNodes (
|
||||||
|
|
||||||
PPTT_NODE_INDEXER * ProcNodeIterator;
|
PPTT_NODE_INDEXER * ProcNodeIterator;
|
||||||
UINT32 NodeCount;
|
UINT32 NodeCount;
|
||||||
|
UINT32 Length;
|
||||||
|
|
||||||
ASSERT (
|
ASSERT (
|
||||||
(Generator != NULL) &&
|
(Generator != NULL) &&
|
||||||
|
@ -539,8 +540,8 @@ AddProcHierarchyNodes (
|
||||||
// imposed on the Processor Hierarchy node by the specification.
|
// imposed on the Processor Hierarchy node by the specification.
|
||||||
// Note: The length field is 8 bit wide while the number of private
|
// Note: The length field is 8 bit wide while the number of private
|
||||||
// resource field is 32 bit wide.
|
// resource field is 32 bit wide.
|
||||||
if ((sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR) +
|
Length = GetProcHierarchyNodeSize (ProcInfoNode);
|
||||||
(ProcInfoNode->NoOfPrivateResources * sizeof (UINT32))) > MAX_UINT8) {
|
if (Length > MAX_UINT8) {
|
||||||
Status = EFI_INVALID_PARAMETER;
|
Status = EFI_INVALID_PARAMETER;
|
||||||
DEBUG ((
|
DEBUG ((
|
||||||
DEBUG_ERROR,
|
DEBUG_ERROR,
|
||||||
|
@ -556,7 +557,7 @@ AddProcHierarchyNodes (
|
||||||
|
|
||||||
// Populate the node header
|
// Populate the node header
|
||||||
ProcStruct->Type = EFI_ACPI_6_3_PPTT_TYPE_PROCESSOR;
|
ProcStruct->Type = EFI_ACPI_6_3_PPTT_TYPE_PROCESSOR;
|
||||||
ProcStruct->Length = GetProcHierarchyNodeSize (ProcInfoNode);
|
ProcStruct->Length = (UINT8)Length;
|
||||||
ProcStruct->Reserved[0] = EFI_ACPI_RESERVED_BYTE;
|
ProcStruct->Reserved[0] = EFI_ACPI_RESERVED_BYTE;
|
||||||
ProcStruct->Reserved[1] = EFI_ACPI_RESERVED_BYTE;
|
ProcStruct->Reserved[1] = EFI_ACPI_RESERVED_BYTE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue