diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch new file mode 100644 index 00000000..968aff9e --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch @@ -0,0 +1,53 @@ +From a954e17f6ee94ae14716e4e690a60d8a3653b14c Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Date: Wed, 11 Oct 2017 17:02:02 -0400 +Subject: [PATCH 2007/4131] drm/amdgpu: Fix extra call to amdgpu_ctx_put. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In amdgpu_cs_parser_init() in case of error handling +amdgpu_ctx_put() is called without setting p->ctx to NULL after that, +later amdgpu_cs_parser_fini() also calls amdgpu_ctx_put() again and +mess up the reference count. + +Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +index 8c583c5..675b29e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +@@ -97,7 +97,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, void *data) + if (copy_from_user(chunk_array, chunk_array_user, + sizeof(uint64_t)*cs->in.num_chunks)) { + ret = -EFAULT; +- goto put_ctx; ++ goto free_chunk; + } + + p->nchunks = cs->in.num_chunks; +@@ -105,7 +105,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, void *data) + GFP_KERNEL); + if (!p->chunks) { + ret = -ENOMEM; +- goto put_ctx; ++ goto free_chunk; + } + + for (i = 0; i < p->nchunks; i++) { +@@ -201,8 +201,6 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, void *data) + kfree(p->chunks); + p->chunks = NULL; + p->nchunks = 0; +-put_ctx: +- amdgpu_ctx_put(p->ctx); + free_chunk: + kfree(chunk_array); + +-- +2.7.4 + |