diff options
author | Deepa Dinamani <deepa.kernel@gmail.com> | 2018-09-19 21:41:07 -0700 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-12-06 17:23:18 +0100 |
commit | e024707bccae15abd493265ea0b72f46a4920727 (patch) | |
tree | 2218eb3b1ee57654a7a426aa82333ed4753ba072 /include/linux/syscalls.h | |
parent | 8bd27a3004e80d3d0962534c97e5a841262d5093 (diff) | |
download | linux-e024707bccae15abd493265ea0b72f46a4920727.tar.gz linux-e024707bccae15abd493265ea0b72f46a4920727.tar.bz2 linux-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/syscalls.h')
-rw-r--r-- | include/linux/syscalls.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 4575ea1f22cd..934e58e0dfa4 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -466,7 +466,10 @@ asmlinkage long sys_sendfile64(int out_fd, int in_fd, /* fs/select.c */ asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *, - fd_set __user *, struct timespec __user *, + fd_set __user *, struct __kernel_timespec __user *, + void __user *); +asmlinkage long sys_pselect6_time32(int, fd_set __user *, fd_set __user *, + fd_set __user *, struct old_timespec32 __user *, void __user *); asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int, struct __kernel_timespec __user *, const sigset_t __user *, |