Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

y2038: rename itimerval to __kernel_old_itimerval

Take the renaming of timeval and timespec one level further,
also renaming itimerval to __kernel_old_itimerval, to avoid
namespace conflicts with the user-space structure that may
use 64-bit time_t members.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+18 -14
+4 -5
include/linux/syscalls.h
··· 16 16 struct iocb; 17 17 struct io_event; 18 18 struct iovec; 19 - struct itimerspec; 20 - struct itimerval; 19 + struct __kernel_old_itimerval; 21 20 struct kexec_segment; 22 21 struct linux_dirent; 23 22 struct linux_dirent64; ··· 590 591 struct old_timespec32 __user *rmtp); 591 592 592 593 /* kernel/itimer.c */ 593 - asmlinkage long sys_getitimer(int which, struct itimerval __user *value); 594 + asmlinkage long sys_getitimer(int which, struct __kernel_old_itimerval __user *value); 594 595 asmlinkage long sys_setitimer(int which, 595 - struct itimerval __user *value, 596 - struct itimerval __user *ovalue); 596 + struct __kernel_old_itimerval __user *value, 597 + struct __kernel_old_itimerval __user *ovalue); 597 598 598 599 /* kernel/kexec.c */ 599 600 asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
+5
include/uapi/linux/time_types.h
··· 33 33 long tv_nsec; /* nanoseconds */ 34 34 }; 35 35 36 + struct __kernel_old_itimerval { 37 + struct __kernel_old_timeval it_interval;/* timer interval */ 38 + struct __kernel_old_timeval it_value; /* current value */ 39 + }; 40 + 36 41 struct __kernel_sock_timeval { 37 42 __s64 tv_sec; 38 43 __s64 tv_usec;
+9 -9
kernel/time/itimer.c
··· 97 97 return 0; 98 98 } 99 99 100 - static int put_itimerval(struct itimerval __user *o, 100 + static int put_itimerval(struct __kernel_old_itimerval __user *o, 101 101 const struct itimerspec64 *i) 102 102 { 103 - struct itimerval v; 103 + struct __kernel_old_itimerval v; 104 104 105 105 v.it_interval.tv_sec = i->it_interval.tv_sec; 106 106 v.it_interval.tv_usec = i->it_interval.tv_nsec / NSEC_PER_USEC; 107 107 v.it_value.tv_sec = i->it_value.tv_sec; 108 108 v.it_value.tv_usec = i->it_value.tv_nsec / NSEC_PER_USEC; 109 - return copy_to_user(o, &v, sizeof(struct itimerval)) ? -EFAULT : 0; 109 + return copy_to_user(o, &v, sizeof(struct __kernel_old_itimerval)) ? -EFAULT : 0; 110 110 } 111 111 112 112 113 - SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value) 113 + SYSCALL_DEFINE2(getitimer, int, which, struct __kernel_old_itimerval __user *, value) 114 114 { 115 115 struct itimerspec64 get_buffer; 116 116 int error = do_getitimer(which, &get_buffer); ··· 314 314 315 315 #endif 316 316 317 - static int get_itimerval(struct itimerspec64 *o, const struct itimerval __user *i) 317 + static int get_itimerval(struct itimerspec64 *o, const struct __kernel_old_itimerval __user *i) 318 318 { 319 - struct itimerval v; 319 + struct __kernel_old_itimerval v; 320 320 321 - if (copy_from_user(&v, i, sizeof(struct itimerval))) 321 + if (copy_from_user(&v, i, sizeof(struct __kernel_old_itimerval))) 322 322 return -EFAULT; 323 323 324 324 /* Validate the timevals in value. */ ··· 333 333 return 0; 334 334 } 335 335 336 - SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value, 337 - struct itimerval __user *, ovalue) 336 + SYSCALL_DEFINE3(setitimer, int, which, struct __kernel_old_itimerval __user *, value, 337 + struct __kernel_old_itimerval __user *, ovalue) 338 338 { 339 339 struct itimerspec64 set_buffer, get_buffer; 340 340 int error;