Currently oem_id is defined as uint8_t[6] and casted to uint64_t* in some use
case. This would lead code scanner to complain about access beyond. Re-define
it in union to enforce 8-byte size and alignment to avoid potential issue.

Signed-off-by: Michael Chen <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.h     | 2 --
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 3 +--
 drivers/gpu/drm/amd/amdkfd/kfd_topology.h | 6 +++++-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h 
b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
index 300634b9f668..a8ca7ecb6d27 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
@@ -42,8 +42,6 @@
 #define CRAT_OEMTABLEID_LENGTH 8
 #define CRAT_RESERVED_LENGTH   6
 
-#define CRAT_OEMID_64BIT_MASK ((1ULL << (CRAT_OEMID_LENGTH * 8)) - 1)
-
 /* Compute Unit flags */
 #define COMPUTE_UNIT_CPU       (1 << 0)  /* Create Virtual CRAT for CPU */
 #define COMPUTE_UNIT_GPU       (1 << 1)  /* Create Virtual CRAT for GPU */
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
index c51f131eaa2f..f7fa0cb18482 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
@@ -958,8 +958,7 @@ static void kfd_update_system_properties(void)
        dev = list_last_entry(&topology_device_list,
                        struct kfd_topology_device, list);
        if (dev) {
-               sys_props.platform_id =
-                       (*((uint64_t *)dev->oem_id)) & CRAT_OEMID_64BIT_MASK;
+               sys_props.platform_id = dev->oem_id64;
                sys_props.platform_oem = *((uint64_t *)dev->oem_table_id);
                sys_props.platform_rev = dev->oem_revision;
        }
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h 
b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
index 27386ce9a021..b3e79ce3bd35 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
@@ -154,7 +154,11 @@ struct kfd_topology_device {
        struct attribute                attr_gpuid;
        struct attribute                attr_name;
        struct attribute                attr_props;
-       uint8_t                         oem_id[CRAT_OEMID_LENGTH];
+       
+       union {
+               uint8_t                         oem_id[CRAT_OEMID_LENGTH];
+               uint64_t                        oem_id64;
+       };
        uint8_t                         oem_table_id[CRAT_OEMTABLEID_LENGTH];
        uint32_t                        oem_revision;
 };
-- 
2.34.1

Reply via email to