diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_dmabuf.c')
-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 | } |