summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-03-19 00:34:25 +0100
committerSumit Semwal <sumit.semwal@ti.com>2012-03-26 11:32:50 +0530
commit6b607e3a658fee490bdabfdeb739a3eb498b1bff (patch)
treea10ad6f713586f9dc7584fe54110d1c44f87b1d5
parentf9a24d1ac9cb82baf5ec5efdb6580a9ce0bd5bfc (diff)
downloadlinux-stable-6b607e3a658fee490bdabfdeb739a3eb498b1bff.tar.gz
linux-stable-6b607e3a658fee490bdabfdeb739a3eb498b1bff.tar.bz2
linux-stable-6b607e3a658fee490bdabfdeb739a3eb498b1bff.zip
dma-buf: don't hold the mutex around map/unmap calls
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@linaro.org>
-rw-r--r--drivers/base/dma-buf.c5
-rw-r--r--include/linux/dma-buf.h2
2 files changed, 1 insertions, 6 deletions
diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
index 3c8c0232ce43..5641b9c8d50c 100644
--- a/drivers/base/dma-buf.c
+++ b/drivers/base/dma-buf.c
@@ -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);
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index bc4203dc6e18..24e0f4828711 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -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;
};