summaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2019-12-16 15:15:03 +0100
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-01-03 15:47:57 +0100
commit1a6c0b36dd19c51cdd76895d009c5deba2286ebb (patch)
tree0da2a0a378af85d587368746db2a2ea8af437487 /include/uapi
parentmedia: v4l2-core: split out data copy from video_usercopy (diff)
downloadlinux-1a6c0b36dd19c51cdd76895d009c5deba2286ebb.tar.xz
linux-1a6c0b36dd19c51cdd76895d009c5deba2286ebb.zip
media: v4l2-core: fix VIDIOC_DQEVENT for time64 ABI
The v4l2_event structure contains a 'struct timespec' member that is defined by the user space C library, creating an ABI incompatibility when that gets updated to a 64-bit time_t. While passing a 32-bit time_t here would be sufficient for CLOCK_MONOTONIC timestamps, simply redefining the structure to use the kernel's __kernel_old_timespec would not work for any library that uses a copy of the linux/videodev2.h header file rather than including the copy from the latest kernel headers. This means the kernel has to be changed to handle both versions of the structure layout on a 32-bit architecture. The easiest way to do this is during the copy from/to user space. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/videodev2.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 6ef4a5b787a4..caf156d45842 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -2341,7 +2341,11 @@ struct v4l2_event {
} u;
__u32 pending;
__u32 sequence;
+#ifdef __KERNEL__
+ struct __kernel_timespec timestamp;
+#else
struct timespec timestamp;
+#endif
__u32 id;
__u32 reserved[8];
};