|
@@ -279,22 +279,6 @@ asmlinkage long sys32_getegid16(void)
|
|
|
return high2lowgid(current->egid);
|
|
|
}
|
|
|
|
|
|
-/* 32-bit timeval and related flotsam. */
|
|
|
-
|
|
|
-static inline long get_tv32(struct timeval *o, struct compat_timeval __user *i)
|
|
|
-{
|
|
|
- return (!access_ok(VERIFY_READ, o, sizeof(*o)) ||
|
|
|
- (__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)
|
|
|
-{
|
|
|
- return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) ||
|
|
|
- (__put_user(i->tv_sec, &o->tv_sec) ||
|
|
|
- __put_user(i->tv_usec, &o->tv_usec)));
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* sys32_ipc() is the de-multiplexer for the SysV IPC calls in 32bit emulation.
|
|
|
*
|
|
@@ -522,57 +506,6 @@ sys32_delete_module(const char __user *name_user, unsigned int flags)
|
|
|
|
|
|
#endif /* CONFIG_MODULES */
|
|
|
|
|
|
-/* Translations due to time_t size differences. Which affects all
|
|
|
- sorts of things, like timeval and itimerval. */
|
|
|
-
|
|
|
-extern struct timezone sys_tz;
|
|
|
-
|
|
|
-asmlinkage long sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
|
|
|
-{
|
|
|
- if (tv) {
|
|
|
- struct timeval ktv;
|
|
|
- do_gettimeofday(&ktv);
|
|
|
- if (put_tv32(tv, &ktv))
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
- if (tz) {
|
|
|
- if (copy_to_user(tz, &sys_tz, sizeof(sys_tz)))
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static inline long get_ts32(struct timespec *o, struct compat_timeval __user *i)
|
|
|
-{
|
|
|
- long usec;
|
|
|
-
|
|
|
- if (!access_ok(VERIFY_READ, i, sizeof(*i)))
|
|
|
- return -EFAULT;
|
|
|
- if (__get_user(o->tv_sec, &i->tv_sec))
|
|
|
- return -EFAULT;
|
|
|
- if (__get_user(usec, &i->tv_usec))
|
|
|
- return -EFAULT;
|
|
|
- o->tv_nsec = usec * 1000;
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
|
|
|
-{
|
|
|
- struct timespec kts;
|
|
|
- struct timezone ktz;
|
|
|
-
|
|
|
- if (tv) {
|
|
|
- if (get_ts32(&kts, tv))
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
- if (tz) {
|
|
|
- if (copy_from_user(&ktz, tz, sizeof(ktz)))
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
-
|
|
|
- return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
|
|
|
-}
|
|
|
-
|
|
|
asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf,
|
|
|
size_t count, u32 poshi, u32 poslo)
|
|
|
{
|