diff options
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.patch | 44 |
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 + |