summaryrefslogtreecommitdiff
path: root/include/linux/compat.h
diff options
context:
space:
mode:
authorDeepa Dinamani <deepa.kernel@gmail.com>2018-09-20 07:41:08 +0300
committerArnd Bergmann <arnd@arndb.de>2018-12-06 19:23:31 +0300
commit7a35397f8c06bffd4c747537095321ff971045a5 (patch)
treedb3bb775e13a2045ca1789f84e3f5495681f6fa1 /include/linux/compat.h
parente024707bccae15abd493265ea0b72f46a4920727 (diff)
downloadlinux-7a35397f8c06bffd4c747537095321ff971045a5.tar.xz
io_pgetevents: use __kernel_timespec
struct timespec is not y2038 safe. struct __kernel_timespec is the new y2038 safe structure for all syscalls that are using struct timespec. Update io_pgetevents interfaces to use struct __kernel_timespec. sigset_t also has different representations on 32 bit and 64 bit architectures. Hence, we need to support the following different syscalls: New y2038 safe syscalls: (Controlled by CONFIG_64BIT_TIME for 32 bit ABIs) Native 64 bit(unchanged) and native 32 bit : sys_io_pgetevents Compat : compat_sys_io_pgetevents_time64 Older y2038 unsafe syscalls: (Controlled by CONFIG_32BIT_COMPAT_TIME for 32 bit ABIs) Native 32 bit : sys_io_pgetevents_time32 Compat : compat_sys_io_pgetevents Note that io_getevents syscalls do not have a y2038 safe solution. Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/linux/compat.h')
-rw-r--r--include/linux/compat.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/compat.h b/include/linux/compat.h
index 5776733b763f..8be8daa38c9a 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -562,6 +562,12 @@ asmlinkage long compat_sys_io_pgetevents(compat_aio_context_t ctx_id,
struct io_event __user *events,
struct old_timespec32 __user *timeout,
const struct __compat_aio_sigset __user *usig);
+asmlinkage long compat_sys_io_pgetevents_time64(compat_aio_context_t ctx_id,
+ compat_long_t min_nr,
+ compat_long_t nr,
+ struct io_event __user *events,
+ struct __kernel_timespec __user *timeout,
+ const struct __compat_aio_sigset __user *usig);
/* fs/cookies.c */
asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, compat_size_t);