aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/compat.h
diff options
context:
space:
mode:
authorDeepa Dinamani <deepa.kernel@gmail.com>2018-09-19 21:41:07 -0700
committerArnd Bergmann <arnd@arndb.de>2018-12-06 17:23:18 +0100
commite024707bccae15abd493265ea0b72f46a4920727 (patch)
tree2218eb3b1ee57654a7a426aa82333ed4753ba072 /include/linux/compat.h
parentppoll: use __kernel_timespec (diff)
downloadlinux-dev-e024707bccae15abd493265ea0b72f46a4920727.tar.xz
linux-dev-e024707bccae15abd493265ea0b72f46a4920727.zip
pselect6: 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 pselect 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_pselect6 Compat : compat_sys_pselect6_time64 Older y2038 unsafe syscalls: (Controlled by CONFIG_32BIT_COMPAT_TIME for 32 bit ABIs) Native 32 bit : pselect6_time32 Compat : compat_sys_pselect6 Note that all other versions of select syscalls will not have y2038 safe versions. 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.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/compat.h b/include/linux/compat.h
index f309a524a4b7..5776733b763f 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -647,6 +647,11 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
compat_ulong_t __user *exp,
struct old_timespec32 __user *tsp,
void __user *sig);
+asmlinkage long compat_sys_pselect6_time64(int n, compat_ulong_t __user *inp,
+ compat_ulong_t __user *outp,
+ compat_ulong_t __user *exp,
+ struct __kernel_timespec __user *tsp,
+ void __user *sig);
asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
unsigned int nfds,
struct old_timespec32 __user *tsp,