drm/amdgpu: fix use-after-free during gpu recovery
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_job.c
index cd968e781077ecef807e652e498e46f88ee80717..f4a3122352def4c580c2430d7f864a395ff20a77 100644 (file)
@@ -169,7 +169,11 @@ static void amdgpu_job_free_cb(struct drm_sched_job *s_job)
        amdgpu_sync_free(&job->sync);
        amdgpu_sync_free(&job->sched_sync);
 
-       dma_fence_put(&job->hw_fence);
+       /* only put the hw fence if has embedded fence */
+       if (!job->hw_fence.ops)
+               kfree(job);
+       else
+               dma_fence_put(&job->hw_fence);
 }
 
 void amdgpu_job_set_gang_leader(struct amdgpu_job *job,