diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_dmabuf.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c index 7d5752fda5f1..9bb533e0d762 100644 --- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c | |||
| @@ -125,13 +125,15 @@ static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf) | |||
| 125 | 125 | ||
| 126 | ret = i915_gem_object_get_pages(obj); | 126 | ret = i915_gem_object_get_pages(obj); |
| 127 | if (ret) | 127 | if (ret) |
| 128 | goto error; | 128 | goto err; |
| 129 | |||
| 130 | i915_gem_object_pin_pages(obj); | ||
| 129 | 131 | ||
| 130 | ret = -ENOMEM; | 132 | ret = -ENOMEM; |
| 131 | 133 | ||
| 132 | pages = drm_malloc_ab(obj->base.size >> PAGE_SHIFT, sizeof(*pages)); | 134 | pages = drm_malloc_ab(obj->base.size >> PAGE_SHIFT, sizeof(*pages)); |
| 133 | if (pages == NULL) | 135 | if (pages == NULL) |
| 134 | goto error; | 136 | goto err_unpin; |
| 135 | 137 | ||
| 136 | i = 0; | 138 | i = 0; |
| 137 | for_each_sg_page(obj->pages->sgl, &sg_iter, obj->pages->nents, 0) | 139 | for_each_sg_page(obj->pages->sgl, &sg_iter, obj->pages->nents, 0) |
| @@ -141,15 +143,16 @@ static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf) | |||
| 141 | drm_free_large(pages); | 143 | drm_free_large(pages); |
| 142 | 144 | ||
| 143 | if (!obj->dma_buf_vmapping) | 145 | if (!obj->dma_buf_vmapping) |
| 144 | goto error; | 146 | goto err_unpin; |
| 145 | 147 | ||
| 146 | obj->vmapping_count = 1; | 148 | obj->vmapping_count = 1; |
| 147 | i915_gem_object_pin_pages(obj); | ||
| 148 | out_unlock: | 149 | out_unlock: |
| 149 | mutex_unlock(&dev->struct_mutex); | 150 | mutex_unlock(&dev->struct_mutex); |
| 150 | return obj->dma_buf_vmapping; | 151 | return obj->dma_buf_vmapping; |
| 151 | 152 | ||
| 152 | error: | 153 | err_unpin: |
| 154 | i915_gem_object_unpin_pages(obj); | ||
| 155 | err: | ||
| 153 | mutex_unlock(&dev->struct_mutex); | 156 | mutex_unlock(&dev->struct_mutex); |
| 154 | return ERR_PTR(ret); | 157 | return ERR_PTR(ret); |
| 155 | } | 158 | } |
