diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 |
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); | ||
636 | out: | 639 | out: |
637 | drm_gem_object_unreference_unlocked(gobj); | 640 | drm_gem_object_unreference_unlocked(gobj); |
638 | return r; | 641 | return r; |