diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_resource.c')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c index 36e129f0023f..5408b1b7996f 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | |||
@@ -862,7 +862,7 @@ int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, | |||
862 | &vmw_vram_sys_placement, true, | 862 | &vmw_vram_sys_placement, true, |
863 | &vmw_user_dmabuf_destroy); | 863 | &vmw_user_dmabuf_destroy); |
864 | if (unlikely(ret != 0)) | 864 | if (unlikely(ret != 0)) |
865 | return ret; | 865 | goto out_no_dmabuf; |
866 | 866 | ||
867 | tmp = ttm_bo_reference(&vmw_user_bo->dma.base); | 867 | tmp = ttm_bo_reference(&vmw_user_bo->dma.base); |
868 | ret = ttm_base_object_init(vmw_fpriv(file_priv)->tfile, | 868 | ret = ttm_base_object_init(vmw_fpriv(file_priv)->tfile, |
@@ -870,19 +870,21 @@ int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, | |||
870 | false, | 870 | false, |
871 | ttm_buffer_type, | 871 | ttm_buffer_type, |
872 | &vmw_user_dmabuf_release, NULL); | 872 | &vmw_user_dmabuf_release, NULL); |
873 | if (unlikely(ret != 0)) { | 873 | if (unlikely(ret != 0)) |
874 | ttm_bo_unref(&tmp); | 874 | goto out_no_base_object; |
875 | } else { | 875 | else { |
876 | rep->handle = vmw_user_bo->base.hash.key; | 876 | rep->handle = vmw_user_bo->base.hash.key; |
877 | rep->map_handle = vmw_user_bo->dma.base.addr_space_offset; | 877 | rep->map_handle = vmw_user_bo->dma.base.addr_space_offset; |
878 | rep->cur_gmr_id = vmw_user_bo->base.hash.key; | 878 | rep->cur_gmr_id = vmw_user_bo->base.hash.key; |
879 | rep->cur_gmr_offset = 0; | 879 | rep->cur_gmr_offset = 0; |
880 | } | 880 | } |
881 | ttm_bo_unref(&tmp); | ||
882 | 881 | ||
882 | out_no_base_object: | ||
883 | ttm_bo_unref(&tmp); | ||
884 | out_no_dmabuf: | ||
883 | ttm_read_unlock(&vmaster->lock); | 885 | ttm_read_unlock(&vmaster->lock); |
884 | 886 | ||
885 | return 0; | 887 | return ret; |
886 | } | 888 | } |
887 | 889 | ||
888 | int vmw_dmabuf_unref_ioctl(struct drm_device *dev, void *data, | 890 | int vmw_dmabuf_unref_ioctl(struct drm_device *dev, void *data, |