summaryrefslogtreecommitdiffstats
path: root/openpower/package/hostboot-p8/0005-error-dereferencing-type-punned-pointer-will-break-s.patch
blob: fcfe57015a54adce218804168a14d37862d8c2d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
From 550d36dca3cdec84d47f05711c2569990d3b4708 Mon Sep 17 00:00:00 2001
From: Stewart Smith <stewart@linux.vnet.ibm.com>
Date: Thu, 25 Aug 2016 19:27:04 +1000
Subject: [PATCH 05/10] error: dereferencing type-punned pointer will break
 strict-aliasing rules

Change-Id: I63accd3e881c941736ece4b4498c2c9d06ff8761
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
---
 src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H             | 7 +++++++
 .../usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H        | 1 -
 src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C        | 6 +++---
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
index e5af2c9..7edf2bf 100755
--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
@@ -227,6 +227,13 @@ namespace getAttrData
         uint8_t              iv_systemType;
         uint8_t              iv_systemType_ext;
         uint8_t              iv_dataVersion;
+    public:
+	MBvpdVMKeyword() : iv_version(0),iv_systemType(0),
+			   iv_systemType_ext(0),iv_dataVersion(0) {};
+	operator uint32_t() const {
+		return iv_version << 24 | iv_systemType << 16 |
+			iv_systemType_ext << 8 | iv_dataVersion;
+	}
     };
 //  Attribute definition
     struct MBvpdAttrDef
diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
index f172508..85460b2 100644
--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
@@ -33,7 +33,6 @@
 #define _HWP_GETMBVPDMEMDATAVERSION_
 
 #include <fapi.H>
-#define VM_KEYWORD_DEFAULT_VALUE 0x00000000
 
 // function pointer typedef definition for HWP call support
 typedef fapi::ReturnCode (*getMBvpdMemoryDataVersion_FP_t)
diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
index 2f83fa2..ef64515 100644
--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
@@ -50,7 +50,7 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
     fapi::ReturnCode l_fapirc;
     DimmType l_dimmType = ISDIMM;
     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX;
-    uint32_t l_vpdMemoryDataVersion = VM_KEYWORD_DEFAULT_VALUE;   
+    MBvpdVMKeyword l_vpdMemoryDataVersion;
     uint32_t l_bufSize = sizeof(l_vpdMemoryDataVersion);
 
     FAPI_DBG("getMBvpdMemoryDataVersion: entry ");
@@ -140,8 +140,8 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
         }
                     
         // Check if the format byte in the value returned is in between valid range
-        if (( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version >  VM_SUPPORTED_HIGH_VER )||
-            ( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version == VM_NOT_SUPPORTED ))
+        if ((l_vpdMemoryDataVersion.iv_version >  VM_SUPPORTED_HIGH_VER )||
+            (l_vpdMemoryDataVersion.iv_version == VM_NOT_SUPPORTED ))
         {
             FAPI_ERR("getMBvpdMemoryDataVersion:"
                      " keyword data returned is invalid : %d ",
-- 
2.7.4

OpenPOWER on IntegriCloud