diff options
author | Anton Blanchard <anton@samba.org> | 2006-01-07 00:49:49 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-09 15:47:13 +1100 |
commit | 002ec58eb57bac2380f0ed5a4e88121b4bdb32ec (patch) | |
tree | f8ee3f3028e6c316b5e49f296b9283c1f79f42da | |
parent | aed9c6ccb87d96c333bd6ae631d9e90f3b6d7271 (diff) | |
download | kernel_samsung_smdk4412-002ec58eb57bac2380f0ed5a4e88121b4bdb32ec.zip kernel_samsung_smdk4412-002ec58eb57bac2380f0ed5a4e88121b4bdb32ec.tar.gz kernel_samsung_smdk4412-002ec58eb57bac2380f0ed5a4e88121b4bdb32ec.tar.bz2 |
[PATCH] ppc64: fix time syscall
ppc64 has its own version of sys_time. It looks pretty scary, touching
a whole bunch of variables without any locking or memory ordering.
In fact, a recent bugreport has shown it can actually go backwards. Time
to remove it and just use the generic sys_time, which is implemented on
top of do_gettimeofday.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/kernel/syscalls.c | 28 | ||||
-rw-r--r-- | arch/powerpc/kernel/systbl.S | 2 |
2 files changed, 1 insertions, 29 deletions
diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c index 91b93d9..ad895c9 100644 --- a/arch/powerpc/kernel/syscalls.c +++ b/arch/powerpc/kernel/syscalls.c @@ -43,9 +43,6 @@ #include <asm/time.h> #include <asm/unistd.h> -extern unsigned long wall_jiffies; - - /* * sys_ipc() is the de-multiplexer for the SysV IPC calls.. * @@ -311,31 +308,6 @@ int sys_olduname(struct oldold_utsname __user *name) return error? -EFAULT: 0; } -#ifdef CONFIG_PPC64 -time_t sys64_time(time_t __user * tloc) -{ - time_t secs; - time_t usecs; - - long tb_delta = tb_ticks_since(tb_last_stamp); - tb_delta += (jiffies - wall_jiffies) * tb_ticks_per_jiffy; - - secs = xtime.tv_sec; - usecs = (xtime.tv_nsec/1000) + tb_delta / tb_ticks_per_usec; - while (usecs >= USEC_PER_SEC) { - ++secs; - usecs -= USEC_PER_SEC; - } - - if (tloc) { - if (put_user(secs,tloc)) - secs = -EFAULT; - } - - return secs; -} -#endif - long ppc_fadvise64_64(int fd, int advice, u32 offset_high, u32 offset_low, u32 len_high, u32 len_low) { diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S index 989f628..65463a1 100644 --- a/arch/powerpc/kernel/systbl.S +++ b/arch/powerpc/kernel/systbl.S @@ -54,7 +54,7 @@ SYSCALL(link) SYSCALL(unlink) COMPAT_SYS(execve) SYSCALL(chdir) -SYSX(sys64_time,compat_sys_time,sys_time) +COMPAT_SYS(time) SYSCALL(mknod) SYSCALL(chmod) SYSCALL(lchown) |