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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 4afc507820c0..4b36e779622f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -615,6 +615,7 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
615 info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT; 615 info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
616 info.domains = robj->initial_domain; 616 info.domains = robj->initial_domain;
617 info.domain_flags = robj->flags; 617 info.domain_flags = robj->flags;
618 amdgpu_bo_unreserve(robj);
618 if (copy_to_user(out, &info, sizeof(info))) 619 if (copy_to_user(out, &info, sizeof(info)))
619 r = -EFAULT; 620 r = -EFAULT;
620 break; 621 break;
@@ -622,17 +623,19 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
622 case AMDGPU_GEM_OP_SET_PLACEMENT: 623 case AMDGPU_GEM_OP_SET_PLACEMENT:
623 if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) { 624 if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) {
624 r = -EPERM; 625 r = -EPERM;
626 amdgpu_bo_unreserve(robj);
625 break; 627 break;
626 } 628 }
627 robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM | 629 robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
628 AMDGPU_GEM_DOMAIN_GTT | 630 AMDGPU_GEM_DOMAIN_GTT |
629 AMDGPU_GEM_DOMAIN_CPU); 631 AMDGPU_GEM_DOMAIN_CPU);
632 amdgpu_bo_unreserve(robj);
630 break; 633 break;
631 default: 634 default:
635 amdgpu_bo_unreserve(robj);
632 r = -EINVAL; 636 r = -EINVAL;
633 } 637 }
634 638
635 amdgpu_bo_unreserve(robj);
636out: 639out:
637 drm_gem_object_unreference_unlocked(gobj); 640 drm_gem_object_unreference_unlocked(gobj);
638 return r; 641 return r;