drm/amdgpu: Fix DEBUG_LOCKS_WARN_ON(depth <= 0) in amdgpu_ctx.lock
If CS is submitted using guilty ctx, we terminate amdgpu_cs_parser_init before locking ctx->lock, latter in amdgpu_cs_parser_fini we still are trying to release the lock just becase parser->ctx != NULL. 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>
This commit is contained in:
parent
cf4197ed57
commit
c554206077
@ -124,14 +124,14 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
|
|||||||
goto free_chunk;
|
goto free_chunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutex_lock(&p->ctx->lock);
|
||||||
|
|
||||||
/* skip guilty context job */
|
/* skip guilty context job */
|
||||||
if (atomic_read(&p->ctx->guilty) == 1) {
|
if (atomic_read(&p->ctx->guilty) == 1) {
|
||||||
ret = -ECANCELED;
|
ret = -ECANCELED;
|
||||||
goto free_chunk;
|
goto free_chunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&p->ctx->lock);
|
|
||||||
|
|
||||||
/* get chunks */
|
/* get chunks */
|
||||||
chunk_array_user = u64_to_user_ptr(cs->in.chunks);
|
chunk_array_user = u64_to_user_ptr(cs->in.chunks);
|
||||||
if (copy_from_user(chunk_array, chunk_array_user,
|
if (copy_from_user(chunk_array, chunk_array_user,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user