diff options
| -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, |
