diff options
author | Deepa Dinamani <deepa.kernel@gmail.com> | 2018-09-20 00:41:08 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-12-06 11:23:31 -0500 |
commit | 7a35397f8c06bffd4c747537095321ff971045a5 (patch) | |
tree | db3bb775e13a2045ca1789f84e3f5495681f6fa1 /include/linux/syscalls.h | |
parent | e024707bccae15abd493265ea0b72f46a4920727 (diff) |
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/syscalls.h')
-rw-r--r-- | include/linux/syscalls.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 934e58e0dfa4..a27cf407de92 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -296,12 +296,18 @@ asmlinkage long sys_io_getevents(aio_context_t ctx_id, | |||
296 | long min_nr, | 296 | long min_nr, |
297 | long nr, | 297 | long nr, |
298 | struct io_event __user *events, | 298 | struct io_event __user *events, |
299 | struct timespec __user *timeout); | 299 | struct __kernel_timespec __user *timeout); |
300 | asmlinkage long sys_io_pgetevents(aio_context_t ctx_id, | 300 | asmlinkage long sys_io_pgetevents(aio_context_t ctx_id, |
301 | long min_nr, | 301 | long min_nr, |
302 | long nr, | 302 | long nr, |
303 | struct io_event __user *events, | 303 | struct io_event __user *events, |
304 | struct timespec __user *timeout, | 304 | struct __kernel_timespec __user *timeout, |
305 | const struct __aio_sigset *sig); | ||
306 | asmlinkage long sys_io_pgetevents_time32(aio_context_t ctx_id, | ||
307 | long min_nr, | ||
308 | long nr, | ||
309 | struct io_event __user *events, | ||
310 | struct old_timespec32 __user *timeout, | ||
305 | const struct __aio_sigset *sig); | 311 | const struct __aio_sigset *sig); |
306 | 312 | ||
307 | /* fs/xattr.c */ | 313 | /* fs/xattr.c */ |