Merge tag 'char-misc-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-2.6-microblaze.git] / drivers / misc / fastrpc.c
index 278ab6c..c9902a1 100644 (file)
@@ -6,6 +6,7 @@
 #include <linux/device.h>
 #include <linux/dma-buf.h>
 #include <linux/dma-mapping.h>
+#include <linux/dma-resv.h>
 #include <linux/idr.h>
 #include <linux/list.h>
 #include <linux/miscdevice.h>
@@ -327,8 +328,8 @@ static void fastrpc_free_map(struct kref *ref)
                                return;
                        }
                }
-               dma_buf_unmap_attachment(map->attach, map->table,
-                                        DMA_BIDIRECTIONAL);
+               dma_buf_unmap_attachment_unlocked(map->attach, map->table,
+                                                 DMA_BIDIRECTIONAL);
                dma_buf_detach(map->buf, map->attach);
                dma_buf_put(map->buf);
        }
@@ -722,6 +723,8 @@ static int fastrpc_mmap(struct dma_buf *dmabuf,
        struct fastrpc_buf *buf = dmabuf->priv;
        size_t size = vma->vm_end - vma->vm_start;
 
+       dma_resv_assert_held(dmabuf->resv);
+
        return dma_mmap_coherent(buf->dev, vma, buf->virt,
                                 FASTRPC_PHYS(buf->phys), size);
 }
@@ -768,7 +771,7 @@ static int fastrpc_map_create(struct fastrpc_user *fl, int fd,
                goto attach_err;
        }
 
-       map->table = dma_buf_map_attachment(map->attach, DMA_BIDIRECTIONAL);
+       map->table = dma_buf_map_attachment_unlocked(map->attach, DMA_BIDIRECTIONAL);
        if (IS_ERR(map->table)) {
                err = PTR_ERR(map->table);
                goto map_err;