time: Change types to new y2038 safe __kernel_itimerspec
timer_set/gettime and timerfd_set/get apis use struct itimerspec at the user interface layer. struct itimerspec is not y2038-safe. Change these interfaces to use y2038-safe struct __kernel_itimerspec instead. This will help define new syscalls when 32bit architectures select CONFIG_64BIT_TIME. Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: arnd@arndb.de Cc: viro@zeniv.linux.org.uk Cc: linux-fsdevel@vger.kernel.org Cc: linux-api@vger.kernel.org Cc: y2038@lists.linaro.org Link: https://lkml.kernel.org/r/20180617051144.29756-4-deepa.kernel@gmail.com
This commit is contained in:

committed by
Thomas Gleixner

parent
afef05cf23
commit
6ff8473507
@@ -743,7 +743,7 @@ static int do_timer_gettime(timer_t timer_id, struct itimerspec64 *setting)
|
||||
|
||||
/* Get the time remaining on a POSIX.1b interval timer. */
|
||||
SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
|
||||
struct itimerspec __user *, setting)
|
||||
struct __kernel_itimerspec __user *, setting)
|
||||
{
|
||||
struct itimerspec64 cur_setting;
|
||||
|
||||
@@ -755,7 +755,8 @@ SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
|
||||
COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
|
||||
struct compat_itimerspec __user *, setting)
|
||||
{
|
||||
@@ -768,6 +769,7 @@ COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -906,8 +908,8 @@ retry:
|
||||
|
||||
/* Set a POSIX.1b interval timer */
|
||||
SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
|
||||
const struct itimerspec __user *, new_setting,
|
||||
struct itimerspec __user *, old_setting)
|
||||
const struct __kernel_itimerspec __user *, new_setting,
|
||||
struct __kernel_itimerspec __user *, old_setting)
|
||||
{
|
||||
struct itimerspec64 new_spec, old_spec;
|
||||
struct itimerspec64 *rtn = old_setting ? &old_spec : NULL;
|
||||
@@ -927,7 +929,7 @@ SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
|
||||
return error;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
|
||||
struct compat_itimerspec __user *, new,
|
||||
struct compat_itimerspec __user *, old)
|
||||
|
Reference in New Issue
Block a user