aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/udl/udl_dmabuf.c7
-rw-r--r--drivers/gpu/drm/udl/udl_drv.h2
-rw-r--r--drivers/gpu/drm/udl/udl_gem.c4
3 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
index 1d85c3a9151d..2425b76dc44c 100644
--- a/drivers/gpu/drm/udl/udl_dmabuf.c
+++ b/drivers/gpu/drm/udl/udl_dmabuf.c
@@ -90,8 +90,11 @@ static struct sg_table *udl_map_dma_buf(struct dma_buf_attachment *attach,
90 return &udl_attach->sgt; 90 return &udl_attach->sgt;
91 91
92 if (!obj->pages) { 92 if (!obj->pages) {
93 DRM_ERROR("pages is null.\n"); 93 ret = udl_gem_get_pages(obj);
94 return ERR_PTR(-ENOMEM); 94 if (ret) {
95 DRM_ERROR("failed to map pages.\n");
96 return ERR_PTR(ret);
97 }
95 } 98 }
96 99
97 page_count = obj->base.size / PAGE_SIZE; 100 page_count = obj->base.size / PAGE_SIZE;
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 1b132d779621..80adbac82bde 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -129,6 +129,8 @@ struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
129struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev, 129struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev,
130 struct dma_buf *dma_buf); 130 struct dma_buf *dma_buf);
131 131
132int udl_gem_get_pages(struct udl_gem_object *obj);
133void udl_gem_put_pages(struct udl_gem_object *obj);
132int udl_gem_vmap(struct udl_gem_object *obj); 134int udl_gem_vmap(struct udl_gem_object *obj);
133void udl_gem_vunmap(struct udl_gem_object *obj); 135void udl_gem_vunmap(struct udl_gem_object *obj);
134int udl_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma); 136int udl_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
index cd3482de5cab..2a0a784ab6ee 100644
--- a/drivers/gpu/drm/udl/udl_gem.c
+++ b/drivers/gpu/drm/udl/udl_gem.c
@@ -127,7 +127,7 @@ int udl_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
127 } 127 }
128} 128}
129 129
130static int udl_gem_get_pages(struct udl_gem_object *obj) 130int udl_gem_get_pages(struct udl_gem_object *obj)
131{ 131{
132 struct page **pages; 132 struct page **pages;
133 133
@@ -143,7 +143,7 @@ static int udl_gem_get_pages(struct udl_gem_object *obj)
143 return 0; 143 return 0;
144} 144}
145 145
146static void udl_gem_put_pages(struct udl_gem_object *obj) 146void udl_gem_put_pages(struct udl_gem_object *obj)
147{ 147{
148 if (obj->base.import_attach) { 148 if (obj->base.import_attach) {
149 drm_free_large(obj->pages); 149 drm_free_large(obj->pages);