aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/sys_sparc32.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/sys_sparc32.c')
-rw-r--r--arch/sparc64/kernel/sys_sparc32.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c
index 73a33dc3bcca..e800503879e4 100644
--- a/arch/sparc64/kernel/sys_sparc32.c
+++ b/arch/sparc64/kernel/sys_sparc32.c
@@ -58,15 +58,6 @@
58#include <asm/mmu_context.h> 58#include <asm/mmu_context.h>
59#include <asm/compat_signal.h> 59#include <asm/compat_signal.h>
60 60
61/* 32-bit timeval and related flotsam. */
62
63static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i)
64{
65 return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) ||
66 (__put_user(i->tv_sec, &o->tv_sec) |
67 __put_user(i->tv_usec, &o->tv_usec)));
68}
69
70#ifdef CONFIG_SYSVIPC 61#ifdef CONFIG_SYSVIPC
71asmlinkage long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr, u32 fifth) 62asmlinkage long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr, u32 fifth)
72{ 63{
@@ -487,59 +478,6 @@ asmlinkage long sys32_delete_module(const char __user *name_user)
487 478
488#endif /* CONFIG_MODULES */ 479#endif /* CONFIG_MODULES */
489 480
490/* Translations due to time_t size differences. Which affects all
491 sorts of things, like timeval and itimerval. */
492
493extern struct timezone sys_tz;
494
495asmlinkage long sys32_gettimeofday(struct compat_timeval __user *tv,
496 struct timezone __user *tz)
497{
498 if (tv) {
499 struct timeval ktv;
500 do_gettimeofday(&ktv);
501 if (put_tv32(tv, &ktv))
502 return -EFAULT;
503 }
504 if (tz) {
505 if (copy_to_user(tz, &sys_tz, sizeof(sys_tz)))
506 return -EFAULT;
507 }
508 return 0;
509}
510
511static inline long get_ts32(struct timespec *o, struct compat_timeval __user *i)
512{
513 long usec;
514
515 if (!access_ok(VERIFY_READ, i, sizeof(*i)))
516 return -EFAULT;
517 if (__get_user(o->tv_sec, &i->tv_sec))
518 return -EFAULT;
519 if (__get_user(usec, &i->tv_usec))
520 return -EFAULT;
521 o->tv_nsec = usec * 1000;
522 return 0;
523}
524
525asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv,
526 struct timezone __user *tz)
527{
528 struct timespec kts;
529 struct timezone ktz;
530
531 if (tv) {
532 if (get_ts32(&kts, tv))
533 return -EFAULT;
534 }
535 if (tz) {
536 if (copy_from_user(&ktz, tz, sizeof(ktz)))
537 return -EFAULT;
538 }
539
540 return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
541}
542
543asmlinkage compat_ssize_t sys32_pread64(unsigned int fd, 481asmlinkage compat_ssize_t sys32_pread64(unsigned int fd,
544 char __user *ubuf, 482 char __user *ubuf,
545 compat_size_t count, 483 compat_size_t count,