[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>
This commit is contained in:
parent
aed9c6ccb8
commit
002ec58eb5
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue