On 11/23/2018 01:07 PM, Mauro Carvalho Chehab wrote:
> As reported by smatch:
> drivers/media/common/videobuf2/videobuf2-core.c:
> drivers/media/common/videobuf2/videobuf2-core.c:2159 vb2_mmap() warn:
> inconsistent returns 'mutex:&q->mmap_lock'.
> Locked on: line 2148
> Unlocked on: line 2100
> line 2108
> line 2113
> line 2118
> line 2156
> line 2159
>
> There is one error condition that doesn't unlock a mutex.
>
> Fixes: cd26d1c4d1bc ("media: vb2: vb2_mmap: move lock up")
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Reviewed-by: Hans Verkuil <[email protected]>
Hmm, that's embarrassing... I should have seen that smatch warning.
Regards,
Hans
> ---
> drivers/media/common/videobuf2/videobuf2-core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/common/videobuf2/videobuf2-core.c
> b/drivers/media/common/videobuf2/videobuf2-core.c
> index 04d1250747cf..0ca81d495bda 100644
> --- a/drivers/media/common/videobuf2/videobuf2-core.c
> +++ b/drivers/media/common/videobuf2/videobuf2-core.c
> @@ -2145,7 +2145,8 @@ int vb2_mmap(struct vb2_queue *q, struct vm_area_struct
> *vma)
> if (length < (vma->vm_end - vma->vm_start)) {
> dprintk(1,
> "MMAP invalid, as it would overflow buffer length\n");
> - return -EINVAL;
> + ret = -EINVAL;
> + goto unlock;
> }
>
> ret = call_memop(vb, mmap, vb->planes[plane].mem_priv, vma);
>