mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
drm/amdgpu: fix use-after-free during gpu recovery
[ Upstream commit 3cb93f3904 ]
[Why]
[ 754.862560] refcount_t: underflow; use-after-free.
[ 754.862898] Call Trace:
[ 754.862903] <TASK>
[ 754.862913] amdgpu_job_free_cb+0xc2/0xe1 [amdgpu]
[ 754.863543] drm_sched_main.cold+0x34/0x39 [amd_sched]
[How]
The fw_fence may be not init, check whether dma_fence_init
is performed before job free
Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3c2686851b
commit
d2a89cd942
@@ -167,7 +167,11 @@ static void amdgpu_job_free_cb(struct drm_sched_job *s_job)
|
|||||||
amdgpu_sync_free(&job->sync);
|
amdgpu_sync_free(&job->sync);
|
||||||
amdgpu_sync_free(&job->sched_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_free(struct amdgpu_job *job)
|
void amdgpu_job_free(struct amdgpu_job *job)
|
||||||
|
|||||||
Reference in New Issue
Block a user