time: Enable get/put_compat_itimerspec64 always
This will aid in enabling the compat syscalls on 32-bit architectures later on. Also move compat_itimerspec and related defines to compat_time.h. The compat_time.h file will eventually be deleted. 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-3-deepa.kernel@gmail.com
This commit is contained in:
parent
d0dd63a8ae
commit
afef05cf23
@ -109,11 +109,6 @@ typedef compat_ulong_t compat_aio_context_t;
|
||||
struct compat_sel_arg_struct;
|
||||
struct rusage;
|
||||
|
||||
struct compat_itimerspec {
|
||||
struct compat_timespec it_interval;
|
||||
struct compat_timespec it_value;
|
||||
};
|
||||
|
||||
struct compat_utimbuf {
|
||||
compat_time_t actime;
|
||||
compat_time_t modtime;
|
||||
@ -294,10 +289,6 @@ extern int compat_get_timespec(struct timespec *, const void __user *);
|
||||
extern int compat_put_timespec(const struct timespec *, void __user *);
|
||||
extern int compat_get_timeval(struct timeval *, const void __user *);
|
||||
extern int compat_put_timeval(const struct timeval *, void __user *);
|
||||
extern int get_compat_itimerspec64(struct itimerspec64 *its,
|
||||
const struct compat_itimerspec __user *uits);
|
||||
extern int put_compat_itimerspec64(const struct itimerspec64 *its,
|
||||
struct compat_itimerspec __user *uits);
|
||||
|
||||
struct compat_iovec {
|
||||
compat_uptr_t iov_base;
|
||||
|
@ -17,7 +17,16 @@ struct compat_timeval {
|
||||
s32 tv_usec;
|
||||
};
|
||||
|
||||
struct compat_itimerspec {
|
||||
struct compat_timespec it_interval;
|
||||
struct compat_timespec it_value;
|
||||
};
|
||||
|
||||
extern int compat_get_timespec64(struct timespec64 *, const void __user *);
|
||||
extern int compat_put_timespec64(const struct timespec64 *, void __user *);
|
||||
extern int get_compat_itimerspec64(struct itimerspec64 *its,
|
||||
const struct compat_itimerspec __user *uits);
|
||||
extern int put_compat_itimerspec64(const struct itimerspec64 *its,
|
||||
struct compat_itimerspec __user *uits);
|
||||
|
||||
#endif /* _LINUX_COMPAT_TIME_H */
|
||||
|
@ -324,35 +324,6 @@ COMPAT_SYSCALL_DEFINE3(sched_getaffinity, compat_pid_t, pid, unsigned int, len,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Todo: Delete these extern declarations when get/put_compat_itimerspec64()
|
||||
* are moved to kernel/time/time.c .
|
||||
*/
|
||||
extern int __compat_get_timespec64(struct timespec64 *ts64,
|
||||
const struct compat_timespec __user *cts);
|
||||
extern int __compat_put_timespec64(const struct timespec64 *ts64,
|
||||
struct compat_timespec __user *cts);
|
||||
|
||||
int get_compat_itimerspec64(struct itimerspec64 *its,
|
||||
const struct compat_itimerspec __user *uits)
|
||||
{
|
||||
|
||||
if (__compat_get_timespec64(&its->it_interval, &uits->it_interval) ||
|
||||
__compat_get_timespec64(&its->it_value, &uits->it_value))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_compat_itimerspec64);
|
||||
|
||||
int put_compat_itimerspec64(const struct itimerspec64 *its,
|
||||
struct compat_itimerspec __user *uits)
|
||||
{
|
||||
if (__compat_put_timespec64(&its->it_interval, &uits->it_interval) ||
|
||||
__compat_put_timespec64(&its->it_value, &uits->it_value))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(put_compat_itimerspec64);
|
||||
|
||||
/*
|
||||
* We currently only need the following fields from the sigevent
|
||||
* structure: sigev_value, sigev_signo, sig_notify and (sometimes
|
||||
|
@ -955,3 +955,24 @@ int put_itimerspec64(const struct itimerspec64 *it,
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(put_itimerspec64);
|
||||
|
||||
int get_compat_itimerspec64(struct itimerspec64 *its,
|
||||
const struct compat_itimerspec __user *uits)
|
||||
{
|
||||
|
||||
if (__compat_get_timespec64(&its->it_interval, &uits->it_interval) ||
|
||||
__compat_get_timespec64(&its->it_value, &uits->it_value))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_compat_itimerspec64);
|
||||
|
||||
int put_compat_itimerspec64(const struct itimerspec64 *its,
|
||||
struct compat_itimerspec __user *uits)
|
||||
{
|
||||
if (__compat_put_timespec64(&its->it_interval, &uits->it_interval) ||
|
||||
__compat_put_timespec64(&its->it_value, &uits->it_value))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(put_compat_itimerspec64);
|
||||
|
Loading…
Reference in New Issue
Block a user