]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
dma-buf: don't hold the mutex around map/unmap calls
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 18 Mar 2012 23:34:25 +0000 (00:34 +0100)
committerSumit Semwal <sumit.semwal@ti.com>
Wed, 21 Mar 2012 06:51:09 +0000 (12:21 +0530)
The mutex protects the attachment list and hence needs to be held
around the callbakc to the exporters (optional) attach/detach
functions.

Holding the mutex around the map/unmap calls doesn't protect any
dma_buf state. Exporters need to properly protect any of their own
state anyway (to protect against calls from their own interfaces).
So this only makes the locking messier (and lockdep easier to anger).

Therefore let's just drop this.

v2: Rebased on top of latest dma-buf-next git.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
drivers/base/dma-buf.c
include/linux/dma-buf.h

index 3c8c0232ce431285c5737fa1b1e521c2a76dfc51..5641b9c8d50cd62a04d7f7d2b84787b745ac26d9 100644 (file)
@@ -258,9 +258,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach,
        if (WARN_ON(!attach || !attach->dmabuf))
                return ERR_PTR(-EINVAL);
 
-       mutex_lock(&attach->dmabuf->lock);
        sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction);
-       mutex_unlock(&attach->dmabuf->lock);
 
        return sg_table;
 }
@@ -282,10 +280,7 @@ void dma_buf_unmap_attachment(struct dma_buf_attachment *attach,
        if (WARN_ON(!attach || !attach->dmabuf || !sg_table))
                return;
 
-       mutex_lock(&attach->dmabuf->lock);
        attach->dmabuf->ops->unmap_dma_buf(attach, sg_table,
                                                direction);
-       mutex_unlock(&attach->dmabuf->lock);
-
 }
 EXPORT_SYMBOL_GPL(dma_buf_unmap_attachment);
index bc4203dc6e182419a5ea2dc4cc4bb891e2726c41..24e0f4828711769cb34842828c2e3350fd32effe 100644 (file)
@@ -88,7 +88,7 @@ struct dma_buf {
        struct file *file;
        struct list_head attachments;
        const struct dma_buf_ops *ops;
-       /* mutex to serialize list manipulation and other ops */
+       /* mutex to serialize list manipulation and attach/detach */
        struct mutex lock;
        void *priv;
 };