[media] vb2: don't return NULL for alloc and get_userptr ops
[sfrench/cifs-2.6.git] / drivers / media / v4l2-core / videobuf2-core.c
index f50ff6f33c6f74059a9d2391d8daf7d748fa6f95..71d8bd8dcc8121543aa0a2db28c0383032bfb9a2 100644 (file)
@@ -198,6 +198,7 @@ static int __vb2_buf_mem_alloc(struct vb2_buffer *vb)
                q->is_output ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
        void *mem_priv;
        int plane;
+       int ret = -ENOMEM;
 
        /*
         * Allocate memory for all planes in this buffer
@@ -209,8 +210,11 @@ static int __vb2_buf_mem_alloc(struct vb2_buffer *vb)
                mem_priv = call_ptr_memop(vb, alloc,
                                q->alloc_devs[plane] ? : q->dev,
                                q->dma_attrs, size, dma_dir, q->gfp_flags);
-               if (IS_ERR_OR_NULL(mem_priv))
+               if (IS_ERR(mem_priv)) {
+                       if (mem_priv)
+                               ret = PTR_ERR(mem_priv);
                        goto free;
+               }
 
                /* Associate allocator private data with this plane */
                vb->planes[plane].mem_priv = mem_priv;
@@ -224,7 +228,7 @@ free:
                vb->planes[plane - 1].mem_priv = NULL;
        }
 
-       return -ENOMEM;
+       return ret;
 }
 
 /**
@@ -1136,10 +1140,10 @@ static int __qbuf_userptr(struct vb2_buffer *vb, const void *pb)
                                q->alloc_devs[plane] ? : q->dev,
                                planes[plane].m.userptr,
                                planes[plane].length, dma_dir);
-               if (IS_ERR_OR_NULL(mem_priv)) {
+               if (IS_ERR(mem_priv)) {
                        dprintk(1, "failed acquiring userspace "
                                                "memory for plane %d\n", plane);
-                       ret = mem_priv ? PTR_ERR(mem_priv) : -EINVAL;
+                       ret = PTR_ERR(mem_priv);
                        goto err;
                }
                vb->planes[plane].mem_priv = mem_priv;