Hi,
On 04/10/2012 12:11 PM, Tomasz Stanislawski wrote:
From: Dave Airlieairlied@redhat.com
Add vmap to dmabuf interface.
Signed-off-by: Dave Airlieairlied@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