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 */ |
