aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch
new file mode 100644
index 00000000..2c0d7ce3
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1610-drm-amdgpu-Fix-memory-leak-when-userptr-validation-f.patch
@@ -0,0 +1,44 @@
+From f126b9abfc5314c00d230d5ee0bfaa2d17bf23a1 Mon Sep 17 00:00:00 2001
+From: Felix Kuehling <Felix.Kuehling@amd.com>
+Date: Tue, 28 Feb 2017 14:17:19 -0500
+Subject: [PATCH 1610/4131] drm/amdgpu: Fix memory leak when userptr validation
+ failed
+
+User pages must be released if ttm_bo_validate failed. Otherwise
+those pages would be leaked.
+
+This fixes KFDMemoryTest.BigBufferStressTest in kfdtest getting
+killed by the OOM killer.
+
+Bug: SWDEV-114596
+
+Change-Id: Ib4044e309b43e7e04c3509a2d49c87d26f0e0c4a
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 28dae72..6283c21 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -416,8 +416,15 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
+ amdgpu_ttm_placement_from_domain(bo, domain);
+ ret = ttm_bo_validate(&bo->tbo, &bo->placement,
+ true, false);
+- if (ret)
++ if (ret) {
++ /* Don't leak the pages. If validate failed,
++ * the pages aren't bound, and won't be
++ * released by unbind later on
++ */
++ release_pages(bo->tbo.ttm->pages,
++ bo->tbo.ttm->num_pages, 0);
+ goto validate_fail;
++ }
+ if (wait)
+ ttm_bo_wait(&bo->tbo, false, false);
+ }
+--
+2.7.4
+