]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86
authorArnd Bergmann <arnd@arndb.de>
Tue, 26 Oct 2021 05:49:54 +0000 (06:49 +0100)
committerAndrea Righi <andrea.righi@canonical.com>
Tue, 7 Dec 2021 06:34:36 +0000 (07:34 +0100)
commit97eeccde5ecc1fc26756ce128e6b815a6b599b48
tree01b02c3dfd2d3e4e4fa7e0564594cb8fe92df38a
parentb4d71e6c1bda16610f062b7900bfd618c3b409c5
media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86

BugLink: https://bugs.launchpad.net/bugs/1953370
[ Upstream commit 678d92b6126b9f55419b6a51ef0a88bce2ef2f20 ]

My previous bugfix addressed an API inconsistency found by syzbot,
and it correctly fixed the issue on x86-64 machines, which now behave
correctly for both native and compat tasks.

Unfortunately, John found that the patch broke compat mode on all other
architectures, as they can no longer rely on the VIDIOC_DQEVENT_TIME32
code from the native handler as a fallback in the compat code.

The best way I can see for addressing this is to generalize the
VIDIOC_DQEVENT32_TIME32 code from x86 and use that for all architectures,
leaving only the VIDIOC_DQEVENT32 variant as x86 specific. The original
code was trying to be clever and use the same conversion helper for native
32-bit code and compat mode, but that turned out to be too obscure so
even I missed that bit I had introduced myself when I made the fix.

Fixes: c344f07aa1b4 ("media: v4l2-core: ignore native time32 ioctls on 64-bit")
Reported-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
drivers/media/v4l2-core/v4l2-compat-ioctl32.c