diff options
author | Andrey Grodzovsky <andrey.grodzovsky@amd.com> | 2017-10-24 13:30:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-04 16:33:11 -0500 |
commit | a4176cb484ac457a08b44c93da06fce09c6e281c (patch) | |
tree | 65a7ee568e4c895812bdee38d1675280c838d7f2 /drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |
parent | 83f4b1180155f2d65472ce943a1f051215030560 (diff) |
drm/amdgpu: Remove job->s_entity to avoid keeping reference to stale pointer.
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_job.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index a58e3c5dd84b..f60662e03761 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |||
@@ -142,12 +142,13 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, | |||
142 | *f = dma_fence_get(&job->base.s_fence->finished); | 142 | *f = dma_fence_get(&job->base.s_fence->finished); |
143 | amdgpu_job_free_resources(job); | 143 | amdgpu_job_free_resources(job); |
144 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); | 144 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); |
145 | amd_sched_entity_push_job(&job->base); | 145 | amd_sched_entity_push_job(&job->base, entity); |
146 | 146 | ||
147 | return 0; | 147 | return 0; |
148 | } | 148 | } |
149 | 149 | ||
150 | static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job) | 150 | static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job, |
151 | struct amd_sched_entity *s_entity) | ||
151 | { | 152 | { |
152 | struct amdgpu_job *job = to_amdgpu_job(sched_job); | 153 | struct amdgpu_job *job = to_amdgpu_job(sched_job); |
153 | struct amdgpu_vm *vm = job->vm; | 154 | struct amdgpu_vm *vm = job->vm; |
@@ -155,7 +156,7 @@ static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job) | |||
155 | struct dma_fence *fence = amdgpu_sync_get_fence(&job->dep_sync); | 156 | struct dma_fence *fence = amdgpu_sync_get_fence(&job->dep_sync); |
156 | int r; | 157 | int r; |
157 | 158 | ||
158 | if (amd_sched_dependency_optimized(fence, sched_job->s_entity)) { | 159 | if (amd_sched_dependency_optimized(fence, s_entity)) { |
159 | r = amdgpu_sync_fence(job->adev, &job->sched_sync, fence); | 160 | r = amdgpu_sync_fence(job->adev, &job->sched_sync, fence); |
160 | if (r) | 161 | if (r) |
161 | DRM_ERROR("Error adding fence to sync (%d)\n", r); | 162 | DRM_ERROR("Error adding fence to sync (%d)\n", r); |