Hi,
On 04/10/2012 12:11 PM, Tomasz Stanislawski wrote:
From: Dave Airlie<airl...@redhat.com>
Add vmap to dmabuf interface.
Signed-off-by: Dave Airlie<airl...@redhat.com>
---
drivers/base/dma-buf.c | 29 +++++++++++++++++++++++++++++
include/linux/dma-buf.h | 16 ++++++++++++++++
2 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
index 07cbbc6..3068258 100644
--- a/drivers/base/dma-buf.c
+++ b/drivers/base/dma-buf.c
@@ -406,3 +406,32 @@ void dma_buf_kunmap(struct dma_buf *dmabuf, unsigned long
page_num,
dmabuf->ops->kunmap(dmabuf, page_num, vaddr);
}
EXPORT_SYMBOL_GPL(dma_buf_kunmap);
+
+/**
+ * dma_buf_vmap - Create virtual mapping for the buffer object into kernel
address space. The same restrictions as for vmap and friends apply.
+ * @dma_buf: [in] buffer to vmap
+ *
+ * This call may fail due to lack of virtual mapping address space.
+ */
+void *dma_buf_vmap(struct dma_buf *dmabuf)
+{
+ WARN_ON(!dmabuf);
How about replacing this with:
if (WARN_ON(!dmabuf))
return NULL;
to avoid null pointer dereference right below ?
+ if (dmabuf->ops->vmap)
+ return dmabuf->ops->vmap(dmabuf);
+ return NULL;
+}
+EXPORT_SYMBOL(dma_buf_vmap);
+
+/**
+ * dma_buf_vunmap - Unmap a page obtained by dma_buf_vmap.
+ * @dma_buf: [in] buffer to vmap
+ */
+void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr)
+{
+ WARN_ON(!dmabuf);
and here
if (WARN_ON(!dmabuf))
return;
?
+ if (dmabuf->ops->vunmap)
+ dmabuf->ops->vunmap(dmabuf, vaddr);
+}
+EXPORT_SYMBOL(dma_buf_vunmap);
--
Regards,
Sylwester
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel