sparc64: use compat_sys_utimes instead of home-grown local copy.
Noticed by Christoph Hellwig. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
0a6db7dc49
Коммит
8376005ea4
|
@ -236,13 +236,6 @@ asmlinkage long sys32_getegid16(void)
|
||||||
|
|
||||||
/* 32-bit timeval and related flotsam. */
|
/* 32-bit timeval and related flotsam. */
|
||||||
|
|
||||||
static long get_tv32(struct timeval *o, struct compat_timeval __user *i)
|
|
||||||
{
|
|
||||||
return (!access_ok(VERIFY_READ, i, sizeof(*i)) ||
|
|
||||||
(__get_user(o->tv_sec, &i->tv_sec) |
|
|
||||||
__get_user(o->tv_usec, &i->tv_usec)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i)
|
static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i)
|
||||||
{
|
{
|
||||||
return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) ||
|
return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) ||
|
||||||
|
@ -757,30 +750,6 @@ asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv,
|
||||||
return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
|
return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage long sys32_utimes(char __user *filename,
|
|
||||||
struct compat_timeval __user *tvs)
|
|
||||||
{
|
|
||||||
struct timespec tv[2];
|
|
||||||
|
|
||||||
if (tvs) {
|
|
||||||
struct timeval ktvs[2];
|
|
||||||
if (get_tv32(&ktvs[0], tvs) ||
|
|
||||||
get_tv32(&ktvs[1], 1+tvs))
|
|
||||||
return -EFAULT;
|
|
||||||
|
|
||||||
if (ktvs[0].tv_usec < 0 || ktvs[0].tv_usec >= 1000000 ||
|
|
||||||
ktvs[1].tv_usec < 0 || ktvs[1].tv_usec >= 1000000)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
tv[0].tv_sec = ktvs[0].tv_sec;
|
|
||||||
tv[0].tv_nsec = 1000 * ktvs[0].tv_usec;
|
|
||||||
tv[1].tv_sec = ktvs[1].tv_sec;
|
|
||||||
tv[1].tv_nsec = 1000 * ktvs[1].tv_usec;
|
|
||||||
}
|
|
||||||
|
|
||||||
return do_utimes(AT_FDCWD, filename, tvs ? tv : NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* These are here just in case some old sparc32 binary calls it. */
|
/* These are here just in case some old sparc32 binary calls it. */
|
||||||
asmlinkage long sys32_pause(void)
|
asmlinkage long sys32_pause(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,7 +45,7 @@ sys_call_table32:
|
||||||
/*120*/ .word compat_sys_readv, compat_sys_writev, sys32_settimeofday, sys32_fchown16, sys_fchmod
|
/*120*/ .word compat_sys_readv, compat_sys_writev, sys32_settimeofday, sys32_fchown16, sys_fchmod
|
||||||
.word sys_nis_syscall, sys32_setreuid16, sys32_setregid16, sys_rename, sys_truncate
|
.word sys_nis_syscall, sys32_setreuid16, sys32_setregid16, sys_rename, sys_truncate
|
||||||
/*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall
|
/*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall
|
||||||
.word sys_nis_syscall, sys32_mkdir, sys_rmdir, sys32_utimes, compat_sys_stat64
|
.word sys_nis_syscall, sys32_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64
|
||||||
/*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit
|
/*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit
|
||||||
.word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write
|
.word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write
|
||||||
/*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
|
/*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
|
||||||
|
|
Загрузка…
Ссылка в новой задаче