[edk2-devel] [PATCH v2 05/16] DynamicTablesPkg: Fix Proc node length assignment
Ard Biesheuvel
ard.biesheuvel at linaro.org
Mon Mar 30 08:11:20 UTC 2020
On Sun, 29 Mar 2020 at 17:14, Sami Mujawar <sami.mujawar at arm.com> wrote:
>
> 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 at arm.com>
> Reviewed-by: Alexei Fedorov <Alexei.Fedorov at arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> ---
>
> Notes:
> v2:
> Splitting patch series and re-submitting DynamicTablesPkg [SAMI]
> patches from https://edk2.groups.io/g/devel/message/46261
>
> DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
> index 9e42eee9b75bb330833b0f56c98947563d9eb821..40699ce113caa8530c89ac20562cf5abda26b88e 100644
> --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
> +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
> @@ -504,6 +504,7 @@ AddProcHierarchyNodes (
>
> PPTT_NODE_INDEXER * ProcNodeIterator;
> UINT32 NodeCount;
> + UINT32 Length;
>
> ASSERT (
> (Generator != NULL) &&
> @@ -539,8 +540,8 @@ AddProcHierarchyNodes (
> // imposed on the Processor Hierarchy node by the specification.
> // Note: The length field is 8 bit wide while the number of private
> // resource field is 32 bit wide.
> - if ((sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR) +
> - (ProcInfoNode->NoOfPrivateResources * sizeof (UINT32))) > MAX_UINT8) {
> + Length = GetProcHierarchyNodeSize (ProcInfoNode);
> + if (Length > MAX_UINT8) {
> Status = EFI_INVALID_PARAMETER;
> DEBUG ((
> DEBUG_ERROR,
> @@ -556,7 +557,7 @@ AddProcHierarchyNodes (
>
> // Populate the node header
> 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[1] = EFI_ACPI_RESERVED_BYTE;
>
> --
> 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#56610): https://edk2.groups.io/g/devel/message/56610
Mute This Topic: https://groups.io/mt/72631538/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list