aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index d4fcf5475464..7b840367004c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -330,26 +330,24 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
330 330
331 r = amdgpu_bo_reserve(bo, true); 331 r = amdgpu_bo_reserve(bo, true);
332 if (r) 332 if (r)
333 goto free_pages; 333 goto user_pages_done;
334 334
335 amdgpu_bo_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT); 335 amdgpu_bo_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT);
336 r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); 336 r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
337 amdgpu_bo_unreserve(bo); 337 amdgpu_bo_unreserve(bo);
338 if (r) 338 if (r)
339 goto free_pages; 339 goto user_pages_done;
340 } 340 }
341 341
342 r = drm_gem_handle_create(filp, gobj, &handle); 342 r = drm_gem_handle_create(filp, gobj, &handle);
343 /* drop reference from allocate - handle holds it now */
344 drm_gem_object_put_unlocked(gobj);
345 if (r) 343 if (r)
346 return r; 344 goto user_pages_done;
347 345
348 args->handle = handle; 346 args->handle = handle;
349 return 0;
350 347
351free_pages: 348user_pages_done:
352 release_pages(bo->tbo.ttm->pages, bo->tbo.ttm->num_pages); 349 if (args->flags & AMDGPU_GEM_USERPTR_VALIDATE)
350 amdgpu_ttm_tt_get_user_pages_done(bo->tbo.ttm);
353 351
354release_object: 352release_object:
355 drm_gem_object_put_unlocked(gobj); 353 drm_gem_object_put_unlocked(gobj);