diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2016-07-21 09:14:02 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-08-24 10:10:40 -0300 |
commit | 0ff657b0f6120cb53f98b1b42c87af34670edff5 (patch) | |
tree | 9baee4a0202c7a51056e016f16bcfb575a1133da /drivers/media/v4l2-core/videobuf2-core.c | |
parent | 82019205e3a8fc687c4ee6538b57039884be4ccc (diff) | |
download | linux-0ff657b0f6120cb53f98b1b42c87af34670edff5.tar.gz linux-0ff657b0f6120cb53f98b1b42c87af34670edff5.tar.bz2 linux-0ff657b0f6120cb53f98b1b42c87af34670edff5.zip |
[media] vb2: don't return NULL for alloc and get_userptr ops
Always return an ERR_PTR() instead of NULL.
This makes the behavior of alloc, get_userptr and attach_dmabuf the
same.
Update the documentation in videobuf2-core.h as well.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media/v4l2-core/videobuf2-core.c')
-rw-r--r-- | drivers/media/v4l2-core/videobuf2-core.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index f50ff6f33c6f..71d8bd8dcc81 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -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; |