Commit 09da66f1 authored by Andrew Martin's avatar Andrew Martin Committed by Alex Deucher
Browse files

drm/amdkfd: Check for NULL return values



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: default avatarAndrew Martin <andrew.martin@amd.com>
Reviewed-by: default avatarFelix Kuehling <felix.kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f0157ce4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
}

/**
+1 −1
Original line number Diff line number Diff line
@@ -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;
+12 −3
Original line number Diff line number Diff line
@@ -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;
		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;
+0 −3
Original line number Diff line number Diff line
@@ -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;