public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Sami Mujawar" <sami.mujawar@arm.com>
To: <devel@edk2.groups.io>
Cc: Sami Mujawar <sami.mujawar@arm.com>, <ard.biesheuvel@linaro.org>,
	<leif.lindholm@linaro.org>, <Matteo.Carlini@arm.com>,
	<Stephanie.Hughes-Fitt@arm.com>, <nd@arm.com>
Subject: [PATCH v1 06/19] DynamicTablesPkg: Fix GT Block length assignment
Date: Fri, 23 Aug 2019 11:55:26 +0100	[thread overview]
Message-ID: <20190823105539.13260-7-sami.mujawar@arm.com> (raw)
In-Reply-To: <20190823105539.13260-1-sami.mujawar@arm.com>

The VS2017 compiler reports 'warning C4267: '=': conversion from
'size_t' to 'UINT16', possible loss of data'.

The sizeof() operator is used to calculate the size of the
GT Block structure. The length field in the GT Block structure
is 16-bit wide. Since the return type of sizeof() operator
is size_t the VS2017 compiler reports the above warning.

To fix the warning, an explicit type cast is added. An additional
check is also performed to ensure that the calculated GT Block
length does not exceed MAX_UINT16.

Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
---
 DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c | 25 ++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c
index 7e86c30649bd36ecebac75c7e3a86a0c25cd590b..0e996698887aefca8a7240fc27fe3cb9324fd3e2 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c
@@ -350,6 +350,7 @@ AddGTBlockList (
   EFI_ACPI_6_3_GTDT_GT_BLOCK_TIMER_STRUCTURE  * GtBlockFrame;
   CM_ARM_GTBLOCK_TIMER_FRAME_INFO             * GTBlockTimerFrameList;
   UINT32                                        GTBlockTimerFrameCount;
+  UINTN                                         Length;
 
   ASSERT (Gtdt != NULL);
   ASSERT (GTBlockInfo != NULL);
@@ -376,11 +377,27 @@ AddGTBlockList (
       return Status;
     }
 
+    Length = sizeof (EFI_ACPI_6_3_GTDT_GT_BLOCK_STRUCTURE) +
+               (sizeof (EFI_ACPI_6_3_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
+                GTBlockInfo->GTBlockTimerFrameCount);
+
+    // Check that the length of the GT block does not
+    // exceed MAX_UINT16
+    if (Length > MAX_UINT16) {
+      Status = EFI_INVALID_PARAMETER;
+      DEBUG ((
+        DEBUG_ERROR,
+        "ERROR: GTDT: Too many GT Frames. Count = %d. " \
+        "Maximum supported GT Block size exceeded. " \
+        "Status = %r\n",
+        GTBlockInfo->GTBlockTimerFrameCount,
+        Status
+        ));
+      return Status;
+    }
+
     GTBlock->Type = EFI_ACPI_6_3_GTDT_GT_BLOCK;
-    GTBlock->Length = sizeof (EFI_ACPI_6_3_GTDT_GT_BLOCK_STRUCTURE) +
-                        (sizeof (EFI_ACPI_6_3_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
-                          GTBlockInfo->GTBlockTimerFrameCount);
-
+    GTBlock->Length = (UINT16)Length;
     GTBlock->Reserved = EFI_ACPI_RESERVED_BYTE;
     GTBlock->CntCtlBase = GTBlockInfo->GTBlockPhysicalAddress;
     GTBlock->GTBlockTimerCount = GTBlockInfo->GTBlockTimerFrameCount;
-- 
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'



  parent reply	other threads:[~2019-08-23 10:57 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-23 10:55 [PATCH v1 00/19] Fix warnings reported by VS2017 compiler Sami Mujawar
2019-08-23 10:55 ` [PATCH v1 01/19] DynamicTablesPkg: Fix entry point param definition Sami Mujawar
2019-08-23 11:47   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 02/19] DynamicTablesPkg: Fix missing local header warning Sami Mujawar
2019-08-23 11:51   ` [edk2-devel] " Alexei Fedorov
2019-11-21 15:22   ` Philippe Mathieu-Daudé
2019-08-23 10:55 ` [PATCH v1 03/19] DynamicTablesPkg: Remove struct CM_ARM_CPU_INFO Sami Mujawar
2019-08-23 11:50   ` [edk2-devel] " Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 04/19] DynamicTablesPkg: Fix serial port subtype warning Sami Mujawar
2019-08-23 11:53   ` [edk2-devel] " Alexei Fedorov
2019-11-21 15:16   ` Philippe Mathieu-Daudé
2019-08-23 10:55 ` [PATCH v1 05/19] DynamicTablesPkg: Fix Proc node length assignment Sami Mujawar
2019-08-23 11:46   ` [edk2-devel] " Alexei Fedorov
2019-08-23 10:55 ` Sami Mujawar [this message]
2019-08-23 11:52   ` [edk2-devel] [PATCH v1 06/19] DynamicTablesPkg: Fix GT Block " Alexei Fedorov
2019-11-21 15:56   ` Philippe Mathieu-Daudé
2019-08-23 10:55 ` [PATCH v1 07/19] DynamicTablesPkg: Fix Boot arch flag width Sami Mujawar
2020-03-27 11:40   ` [edk2-devel] " Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 08/19] DynamicTablesPkg: Fix ACPI table rev field width Sami Mujawar
2019-08-23 11:53   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 09/19] DynamicTablesPkg: Fix unaligned pointers usage Sami Mujawar
2019-08-23 11:54   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 10/19] DynamicTablesPkg: Serial debug port initialisation Sami Mujawar
2019-11-21 15:20   ` [edk2-devel] " Philippe Mathieu-Daudé
2019-11-21 15:23     ` Leif Lindholm
2019-11-21 15:29       ` Philippe Mathieu-Daudé
2019-11-21 15:48         ` Leif Lindholm
2019-11-21 15:55           ` Philippe Mathieu-Daudé
2020-03-27 11:43   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 11/19] DynamicTablesPkg: Remove redundant frame count check Sami Mujawar
2019-08-23 11:52   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 12/19] DynamicTablesPkg: Fix IORT node length assignment Sami Mujawar
2019-08-23 11:52   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 13/19] DynamicTablesPkg: IORT: Fix uninitialized memory usage Sami Mujawar
2020-03-27 11:45   ` [edk2-devel] " Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 14/19] DynamicTablesPkg: PPTT: " Sami Mujawar
2019-08-23 11:49   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 15/19] DynamicTablesPkg: Remove erroneous use of EFIAPI Sami Mujawar
2019-08-23 11:50   ` Alexei Fedorov
2019-11-21 15:42   ` [edk2-devel] " Philippe Mathieu-Daudé
2019-08-23 10:55 ` [PATCH v1 16/19] DynamicTablesPkg: Option for VS2017 static code analysis Sami Mujawar
2019-08-23 11:49   ` Alexei Fedorov
2019-08-23 10:55 ` [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning Sami Mujawar
2019-08-23 11:48   ` Alexei Fedorov
2019-11-21 12:35   ` Leif Lindholm
2019-11-21 15:13   ` [edk2-devel] " Philippe Mathieu-Daudé
2019-08-23 10:55 ` [PATCH v1 18/19] ArmPlatformPkg: Fix comparison of constants warning Sami Mujawar
2019-08-23 11:49   ` Alexei Fedorov
2019-11-21 12:35   ` Leif Lindholm
2019-11-21 12:39     ` Ard Biesheuvel
2019-11-21 12:53       ` Leif Lindholm
2019-11-21 13:09         ` Ard Biesheuvel
2019-11-21 15:15           ` Leif Lindholm
2019-11-21 15:16             ` Ard Biesheuvel
2019-08-23 10:55 ` [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use Sami Mujawar
2019-08-23 11:48   ` Alexei Fedorov
2019-08-23 13:50   ` Liming Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190823105539.13260-7-sami.mujawar@arm.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox