media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area()
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 7 Dec 2022 13:04:34 +0000 (13:04 +0000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Dec 2022 19:25:40 +0000 (11:25 -0800)
commit098e5edc5d048a8df8691fd9fde895af100be42b
tree0bba482a084bb3df55009e286c80ef34a76c0080
parent8ed710da2873c2aeb3bb805864a699affaf1d03b
media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area()

While vb2_mmap took the mmap_lock mutex, vb2_get_unmapped_area didn't.
Add this.

Also take this opportunity to move the 'q->memory != VB2_MEMORY_MMAP'
check and vb2_fileio_is_active() check into __find_plane_by_offset() so
both vb2_mmap and vb2_get_unmapped_area do the same checks.

Since q->memory is checked while mmap_lock is held, also take that lock
in reqbufs and create_bufs when it is set, and set it back to
MEMORY_UNKNOWN on error.

Fixes: f035eb4e976e ("[media] videobuf2: fix lockdep warning")
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Acked-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/media/common/videobuf2/videobuf2-core.c