]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/drm_prime.c
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
[karo-tx-linux.git] / drivers / gpu / drm / drm_prime.c
index 1e0de41f085c2419863ee5c462d6cbf54ce77c8a..85e450e3241cb1d5f6281ee9e417f7e8e4301da1 100644 (file)
@@ -119,12 +119,13 @@ static void drm_gem_map_detach(struct dma_buf *dma_buf,
                return;
 
        sgt = prime_attach->sgt;
+       if (sgt) {
+               if (prime_attach->dir != DMA_NONE)
+                       dma_unmap_sg(attach->dev, sgt->sgl, sgt->nents,
+                                       prime_attach->dir);
+               sg_free_table(sgt);
+       }
 
-       if (prime_attach->dir != DMA_NONE)
-               dma_unmap_sg(attach->dev, sgt->sgl, sgt->nents,
-                               prime_attach->dir);
-
-       sg_free_table(sgt);
        kfree(sgt);
        kfree(prime_attach);
        attach->priv = NULL;
@@ -244,7 +245,13 @@ static void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf,
 static int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf,
                struct vm_area_struct *vma)
 {
-       return -EINVAL;
+       struct drm_gem_object *obj = dma_buf->priv;
+       struct drm_device *dev = obj->dev;
+
+       if (!dev->driver->gem_prime_mmap)
+               return -ENOSYS;
+
+       return dev->driver->gem_prime_mmap(obj, vma);
 }
 
 static const struct dma_buf_ops drm_gem_prime_dmabuf_ops =  {