diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_job.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index 5071b96be982..c2fd6f3076a6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c @@ -159,7 +159,10 @@ void amdgpu_job_free(struct amdgpu_job *job)  	amdgpu_sync_free(&job->sync);  	amdgpu_sync_free(&job->sched_sync); -	dma_fence_put(&job->hw_fence); +	if (!job->hw_fence.ops) +		kfree(job); +	else +		dma_fence_put(&job->hw_fence);  }  int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity, @@ -272,10 +275,6 @@ void amdgpu_job_stop_all_jobs_on_sched(struct drm_gpu_scheduler *sched)  	/* Signal all jobs not yet scheduled */  	for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) {  		struct drm_sched_rq *rq = &sched->sched_rq[i]; - -		if (!rq) -			continue; -  		spin_lock(&rq->lock);  		list_for_each_entry(s_entity, &rq->entities, list) {  			while ((s_job = to_drm_sched_job(spsc_queue_pop(&s_entity->job_queue)))) {  | 
