Skip to content

Commit 4c22ea2

Browse files
committed
y2038: use compat_{get,set}_itimer on alpha
The itimer handling for the old alpha osf_setitimer/osf_getitimer system calls is identical to the compat version of getitimer/setitimer, so just use those directly. Signed-off-by: Arnd Bergmann <[email protected]>
1 parent c1745f8 commit 4c22ea2

File tree

3 files changed

+4
-69
lines changed

3 files changed

+4
-69
lines changed

arch/alpha/kernel/osf_sys.c

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -971,30 +971,6 @@ put_tv_to_tv32(struct timeval32 __user *o, struct __kernel_old_timeval *i)
971971
sizeof(struct timeval32));
972972
}
973973

974-
static inline long
975-
get_it32(struct itimerval *o, struct itimerval32 __user *i)
976-
{
977-
struct itimerval32 itv;
978-
if (copy_from_user(&itv, i, sizeof(struct itimerval32)))
979-
return -EFAULT;
980-
o->it_interval.tv_sec = itv.it_interval.tv_sec;
981-
o->it_interval.tv_usec = itv.it_interval.tv_usec;
982-
o->it_value.tv_sec = itv.it_value.tv_sec;
983-
o->it_value.tv_usec = itv.it_value.tv_usec;
984-
return 0;
985-
}
986-
987-
static inline long
988-
put_it32(struct itimerval32 __user *o, struct itimerval *i)
989-
{
990-
return copy_to_user(o, &(struct itimerval32){
991-
.it_interval.tv_sec = o->it_interval.tv_sec,
992-
.it_interval.tv_usec = o->it_interval.tv_usec,
993-
.it_value.tv_sec = o->it_value.tv_sec,
994-
.it_value.tv_usec = o->it_value.tv_usec},
995-
sizeof(struct itimerval32));
996-
}
997-
998974
static inline void
999975
jiffies_to_timeval32(unsigned long jiffies, struct timeval32 *value)
1000976
{
@@ -1039,47 +1015,6 @@ SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
10391015

10401016
asmlinkage long sys_ni_posix_timers(void);
10411017

1042-
SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it)
1043-
{
1044-
struct itimerval kit;
1045-
int error;
1046-
1047-
if (!IS_ENABLED(CONFIG_POSIX_TIMERS))
1048-
return sys_ni_posix_timers();
1049-
1050-
error = do_getitimer(which, &kit);
1051-
if (!error && put_it32(it, &kit))
1052-
error = -EFAULT;
1053-
1054-
return error;
1055-
}
1056-
1057-
SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
1058-
struct itimerval32 __user *, out)
1059-
{
1060-
struct itimerval kin, kout;
1061-
int error;
1062-
1063-
if (!IS_ENABLED(CONFIG_POSIX_TIMERS))
1064-
return sys_ni_posix_timers();
1065-
1066-
if (in) {
1067-
if (get_it32(&kin, in))
1068-
return -EFAULT;
1069-
} else
1070-
memset(&kin, 0, sizeof(kin));
1071-
1072-
error = do_setitimer(which, &kin, out ? &kout : NULL);
1073-
if (error || !out)
1074-
return error;
1075-
1076-
if (put_it32(out, &kout))
1077-
return -EFAULT;
1078-
1079-
return 0;
1080-
1081-
}
1082-
10831018
SYSCALL_DEFINE2(osf_utimes, const char __user *, filename,
10841019
struct timeval32 __user *, tvs)
10851020
{

arch/alpha/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@
8989
80 common setgroups sys_setgroups
9090
81 common osf_old_getpgrp sys_ni_syscall
9191
82 common setpgrp sys_setpgid
92-
83 common osf_setitimer sys_osf_setitimer
92+
83 common osf_setitimer compat_sys_setitimer
9393
84 common osf_old_wait sys_ni_syscall
9494
85 common osf_table sys_ni_syscall
95-
86 common osf_getitimer sys_osf_getitimer
95+
86 common osf_getitimer compat_sys_getitimer
9696
87 common gethostname sys_gethostname
9797
88 common sethostname sys_sethostname
9898
89 common getdtablesize sys_getdtablesize

kernel/time/itimer.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value)
111111
return error;
112112
}
113113

114-
#ifdef CONFIG_COMPAT
114+
#if defined(CONFIG_COMPAT) || defined(CONFIG_ALPHA)
115115
struct old_itimerval32 {
116116
struct old_timeval32 it_interval;
117117
struct old_timeval32 it_value;
@@ -324,7 +324,7 @@ SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
324324
return 0;
325325
}
326326

327-
#ifdef CONFIG_COMPAT
327+
#if defined(CONFIG_COMPAT) || defined(CONFIG_ALPHA)
328328
static int get_old_itimerval32(struct itimerval *o, const struct old_itimerval32 __user *i)
329329
{
330330
struct old_itimerval32 v32;

0 commit comments

Comments
 (0)