]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdkfd: Check for NULL return values
authorAndrew Martin <andrew.martin@amd.com>
Fri, 12 Dec 2025 07:59:17 +0000 (15:59 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Feb 2026 17:16:11 +0000 (12:16 -0500)
This patch fixes issues when the code moves forward with a potential
NULL pointer, without checking.
Removed one redundant NULL check for a function parameter. This check
is already done in the only caller.

Signed-off-by: Andrew Martin <andrew.martin@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
drivers/gpu/drm/amd/amdkfd/kfd_crat.c
drivers/gpu/drm/amd/amdkfd/kfd_debug.c
drivers/gpu/drm/amd/amdkfd/kfd_process.c

index 193ed8becab8d273119472ebaabd1d9c9bcebf8f..31b8fa52b42fa03c039a90174f9d7822ff401f28 100644 (file)
@@ -107,7 +107,7 @@ static const char *amdkfd_fence_get_timeline_name(struct dma_fence *f)
 {
        struct amdgpu_amdkfd_fence *fence = to_amdgpu_amdkfd_fence(f);
 
-       return fence->timeline_name;
+       return fence ? fence->timeline_name : NULL;
 }
 
 /**
index 36ffc3c7853673acf74280de54c8ef210bbd8546..a1087c13f2419824e37c38daa3527c0a50ba612b 100644 (file)
@@ -2359,7 +2359,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
        if (kdev->kfd->hive_id) {
                for (nid = 0; nid < proximity_domain; ++nid) {
                        peer_dev = kfd_topology_device_by_proximity_domain_no_lock(nid);
-                       if (!peer_dev->gpu)
+                       if (!peer_dev || !peer_dev->gpu)
                                continue;
                        if (peer_dev->gpu->kfd->hive_id != kdev->kfd->hive_id)
                                continue;
index bedb95ce965908abeae6181995efa6e3abb81514..0f7aa51b629eb6ee85bff9b39690178f5e2a5cce 100644 (file)
@@ -523,10 +523,15 @@ int kfd_dbg_trap_set_flags(struct kfd_process *target, uint32_t *flags)
        int i, r = 0, rewind_count = 0;
 
        for (i = 0; i < target->n_pdds; i++) {
+               uint32_t caps;
+               uint32_t caps2;
                struct kfd_topology_device *topo_dev =
-                               kfd_topology_device_by_id(target->pdds[i]->dev->id);
-               uint32_t caps = topo_dev->node_props.capability;
-               uint32_t caps2 = topo_dev->node_props.capability2;
+                       kfd_topology_device_by_id(target->pdds[i]->dev->id);
+               if (!topo_dev)
+                       return -EINVAL;
+
+               caps = topo_dev->node_props.capability;
+               caps2 = topo_dev->node_props.capability2;
 
                if (!(caps & HSA_CAP_TRAP_DEBUG_PRECISE_MEMORY_OPERATIONS_SUPPORTED) &&
                        (*flags & KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP)) {
@@ -1086,6 +1091,10 @@ int kfd_dbg_trap_device_snapshot(struct kfd_process *target,
        for (i = 0; i < tmp_num_devices; i++) {
                struct kfd_process_device *pdd = target->pdds[i];
                struct kfd_topology_device *topo_dev = kfd_topology_device_by_id(pdd->dev->id);
+               if (!topo_dev) {
+                       r = -EINVAL;
+                       break;
+               }
 
                device_info.gpu_id = pdd->dev->id;
                device_info.exception_status = pdd->exception_status;
index ba25d83c23e78e73298d680fe89e8694ff1a9e7c..6d32941ce8c74957336955aaef45fa1e21caa213 100644 (file)
@@ -1773,9 +1773,6 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
        struct kfd_node *dev;
        int ret;
 
-       if (!drm_file)
-               return -EINVAL;
-
        if (pdd->drm_priv)
                return -EBUSY;