aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2007-drm-amdgpu-Fix-extra-call-to-amdgpu_ctx_put.patch
diff options
context:
space:
mode:
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.patch53
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
+