From f126b9abfc5314c00d230d5ee0bfaa2d17bf23a1 Mon Sep 17 00:00:00 2001 From: Felix Kuehling 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 --- 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