]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdkfd: Reconcile the definition and use of oem_id in struct kfd_topology_device
authorMichael Chen <michael.chen@amd.com>
Fri, 3 May 2024 19:31:08 +0000 (15:31 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:06:40 +0000 (11:06 +0200)
[ Upstream commit 10f624ef239bd136cdcc5bbc626157a57b938a31 ]

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 <michael.chen@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdkfd/kfd_crat.h
drivers/gpu/drm/amd/amdkfd/kfd_topology.c
drivers/gpu/drm/amd/amdkfd/kfd_topology.h

index d54ceebd346b7a78c8f65414ff58d23f2aaeb450..30c70b3ab17f1555d0bd03a4dc47e59b7bc28726 100644 (file)
@@ -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 */
index 2b31c3066aaaec6e426292cb865c6c6b9cb0bc25..b5738032237e3be8401086ce53a7593883ca875a 100644 (file)
@@ -906,8 +906,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;
        }
index 326d9b26b7aa7fbbab553671ee1a0d348739d8bf..22476a9390641953ba62c0fea75a423e83330052 100644 (file)
@@ -182,7 +182,10 @@ 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;
 };