[media] vb2: add WARN_ONs checking if a valid struct device was passed
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 21 Jul 2016 12:14:03 +0000 (09:14 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 24 Aug 2016 13:18:42 +0000 (10:18 -0300)
The dma-contig and dma-sg memops require a valid struct device for
the DMA to be handled correctly.

Call WARN_ON and return ERR_PTR(-EINVAL) if it was NULL.

Setting the correct device pointer was forgotten in several new driver
submissions. This was caught during code review, but it really should be
caught in the code.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/v4l2-core/videobuf2-dma-contig.c
drivers/media/v4l2-core/videobuf2-dma-sg.c

index 59fa204..fb6a177 100644 (file)
@@ -141,6 +141,9 @@ static void *vb2_dc_alloc(struct device *dev, unsigned long attrs,
 {
        struct vb2_dc_buf *buf;
 
+       if (WARN_ON(!dev))
+               return ERR_PTR(-EINVAL);
+
        buf = kzalloc(sizeof *buf, GFP_KERNEL);
        if (!buf)
                return ERR_PTR(-ENOMEM);
@@ -493,6 +496,9 @@ static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr,
                return ERR_PTR(-EINVAL);
        }
 
+       if (WARN_ON(!dev))
+               return ERR_PTR(-EINVAL);
+
        buf = kzalloc(sizeof *buf, GFP_KERNEL);
        if (!buf)
                return ERR_PTR(-ENOMEM);
@@ -673,6 +679,9 @@ static void *vb2_dc_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
        if (dbuf->size < size)
                return ERR_PTR(-EFAULT);
 
+       if (WARN_ON(!dev))
+               return ERR_PTR(-EINVAL);
+
        buf = kzalloc(sizeof(*buf), GFP_KERNEL);
        if (!buf)
                return ERR_PTR(-ENOMEM);
index e0165c1..ecff8f4 100644 (file)
@@ -225,6 +225,9 @@ static void *vb2_dma_sg_get_userptr(struct device *dev, unsigned long vaddr,
        struct sg_table *sgt;
        struct frame_vector *vec;
 
+       if (WARN_ON(!dev))
+               return ERR_PTR(-EINVAL);
+
        buf = kzalloc(sizeof *buf, GFP_KERNEL);
        if (!buf)
                return ERR_PTR(-ENOMEM);
@@ -607,6 +610,9 @@ static void *vb2_dma_sg_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
        struct vb2_dma_sg_buf *buf;
        struct dma_buf_attachment *dba;
 
+       if (WARN_ON(!dev))
+               return ERR_PTR(-EINVAL);
+
        if (dbuf->size < size)
                return ERR_PTR(-EFAULT);