[edk2-devel] [PATCH v1 09/19] DynamicTablesPkg: Fix unaligned pointers usage
Alexei Fedorov
Alexei.Fedorov at arm.com
Fri Aug 23 11:54:11 UTC 2019
Reviewed-by: Alexei Fedorov <Alexei.Fedorov at arm.com>
Alexei
________________________________
From: Sami Mujawar <sami.mujawar at arm.com>
Sent: 23 August 2019 11:55
To: devel at edk2.groups.io <devel at edk2.groups.io>
Cc: Sami Mujawar <Sami.Mujawar at arm.com>; Alexei Fedorov <Alexei.Fedorov at arm.com>; leif.lindholm at linaro.org <leif.lindholm at linaro.org>; Matteo Carlini <Matteo.Carlini at arm.com>; nd <nd at arm.com>
Subject: [PATCH v1 09/19] DynamicTablesPkg: Fix unaligned pointers usage
The VS2017 compiler reports 'warning C4366: The result of
the unary '&' operator may be unaligned' if an address of
an unaligned structure member is passed as an argument to
a function.
Fix this warning by using local variables in place of
unaligned structure members.
Signed-off-by: Sami Mujawar <sami.mujawar at arm.com>
---
DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c | 24 +++++++++++++++-----
DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.h | 13 +++++------
2 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
index 40699ce113caa8530c89ac20562cf5abda26b88e..82070403ac8757f54e839fd00eb4acb3292fc60c 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
@@ -1066,6 +1066,9 @@ BuildPpttTable (
EFI_STATUS Status;
UINT32 TableSize;
UINT32 ProcTopologyStructCount;
+ UINT32 ProcHierarchyNodeCount;
+ UINT32 CacheStructCount;
+ UINT32 IdStructCount;
UINT32 ProcHierarchyNodeOffset;
UINT32 CacheStructOffset;
@@ -1113,7 +1116,7 @@ BuildPpttTable (
CfgMgrProtocol,
CM_NULL_TOKEN,
&ProcHierarchyNodeList,
- &Generator->ProcHierarchyNodeCount
+ &ProcHierarchyNodeCount
);
if (EFI_ERROR (Status)) {
DEBUG ((
@@ -1124,7 +1127,8 @@ BuildPpttTable (
goto error_handler;
}
- ProcTopologyStructCount = Generator->ProcHierarchyNodeCount;
+ ProcTopologyStructCount = ProcHierarchyNodeCount;
+ Generator->ProcHierarchyNodeCount = ProcHierarchyNodeCount;
// Get the cache info and update the processor topology structure count with
// Cache Type Structures (Type 1)
@@ -1132,7 +1136,7 @@ BuildPpttTable (
CfgMgrProtocol,
CM_NULL_TOKEN,
&CacheStructList,
- &Generator->CacheStructCount
+ &CacheStructCount
);
if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
DEBUG ((
@@ -1143,7 +1147,8 @@ BuildPpttTable (
goto error_handler;
}
- ProcTopologyStructCount += Generator->CacheStructCount;
+ ProcTopologyStructCount += CacheStructCount;
+ Generator->CacheStructCount = CacheStructCount;
// Get the processor hierarchy node ID info and update the processor topology
// structure count with ID Structures (Type 2)
@@ -1151,7 +1156,7 @@ BuildPpttTable (
CfgMgrProtocol,
CM_NULL_TOKEN,
&IdStructList,
- &Generator->IdStructCount
+ &IdStructCount
);
if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
DEBUG ((
@@ -1163,7 +1168,8 @@ BuildPpttTable (
goto error_handler;
}
- ProcTopologyStructCount += Generator->IdStructCount;
+ ProcTopologyStructCount += IdStructCount;
+ Generator->IdStructCount = IdStructCount;
// Allocate Node Indexer array
NodeIndexer = (PPTT_NODE_INDEXER*)AllocateZeroPool (
@@ -1475,6 +1481,12 @@ ACPI_PPTT_GENERATOR PpttGenerator = {
// Processor topology node count
0,
+ // Count of Processor Hierarchy Nodes
+ 0,
+ // Count of Cache Structures
+ 0,
+ // Count of Id Structures
+ 0,
// Pointer to PPTT Node Indexer
NULL
};
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.h b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.h
index 6a0fdd08e1533c57285f420555586314c70a5ed5..0a14da502d595e27d87262b1bac681318f1d9ced 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.h
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.h
@@ -167,6 +167,12 @@ typedef struct AcpiPpttGenerator {
ACPI_TABLE_GENERATOR Header;
/// PPTT structure count
UINT32 ProcTopologyStructCount;
+ /// Count of Processor Hierarchy Nodes
+ UINT32 ProcHierarchyNodeCount;
+ /// Count of Cache Structures
+ UINT32 CacheStructCount;
+ /// Count of Id Structures
+ UINT32 IdStructCount;
/// List of indexed CM objects for PPTT generation
PPTT_NODE_INDEXER * NodeIndexer;
/// Pointer to the start of Processor Hierarchy nodes in
@@ -176,13 +182,6 @@ typedef struct AcpiPpttGenerator {
PPTT_NODE_INDEXER * CacheStructIndexedList;
/// Pointer to the start of Id Structures in the Node Indexer array
PPTT_NODE_INDEXER * IdStructIndexedList;
- /// Count of Processor Hierarchy Nodes
- UINT32 ProcHierarchyNodeCount;
- /// Count of Cache Structures
- UINT32 CacheStructCount;
- /// Count of Id Structures
- UINT32 IdStructCount;
-
} ACPI_PPTT_GENERATOR;
#pragma pack()
--
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#46296): https://edk2.groups.io/g/devel/message/46296
Mute This Topic: https://groups.io/mt/32999786/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20190823/bed1ebd5/attachment.htm>
More information about the edk2-devel-archive
mailing list