diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-04 22:53:39 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-04 22:53:39 -0700 |
commit | da5aad2ecc57ce268b3f8421ac5e1cd759982c66 (patch) | |
tree | 2c059eeafc94a0e8a8c003ba0992b0dd97608a4f /kernel | |
parent | ee2b072ada7e2e8741609d962dc052ad2283fd90 (diff) | |
parent | bbb644a204ca3ebca09dce03aded646033428664 (diff) | |
download | history-da5aad2ecc57ce268b3f8421ac5e1cd759982c66.tar.gz |
Merge bk://kernel.bkbits.net/davem/sparc-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/compat.c | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/kernel/compat.c b/kernel/compat.c index 540574ce88b571..57cc48e9036140 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -182,7 +182,7 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set) mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); - ret = sys_sigpending(&s); + ret = sys_sigpending((old_sigset_t __user *) &s); set_fs(old_fs); if (ret == 0) ret = put_user(s, set); @@ -200,7 +200,9 @@ asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set, return -EFAULT; old_fs = get_fs(); set_fs(KERNEL_DS); - ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL); + ret = sys_sigprocmask(how, + set ? (old_sigset_t __user *) &s : NULL, + oset ? (old_sigset_t __user *) &s : NULL); set_fs(old_fs); if (ret == 0) if (oset) @@ -223,7 +225,7 @@ asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, int val, timeout = timespec_to_jiffies(&t) + 1; } if (op >= FUTEX_REQUEUE) - val2 = (int) (long) utime; + val2 = (int) (unsigned long) utime; return do_futex((unsigned long)uaddr, op, val, timeout, (unsigned long)uaddr2, val2, val3); @@ -250,7 +252,7 @@ asmlinkage long compat_sys_setrlimit(unsigned int resource, if (r.rlim_max == COMPAT_RLIM_INFINITY) r.rlim_max = RLIM_INFINITY; set_fs(KERNEL_DS); - ret = sys_setrlimit(resource, &r); + ret = sys_setrlimit(resource, (struct rlimit __user *) &r); set_fs(old_fs); return ret; } @@ -292,7 +294,7 @@ asmlinkage long compat_sys_getrlimit (unsigned int resource, mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); - ret = sys_getrlimit(resource, &r); + ret = sys_getrlimit(resource, (struct rlimit __user *) &r); set_fs(old_fs); if (!ret) { if (r.rlim_cur > COMPAT_RLIM_INFINITY) @@ -340,7 +342,7 @@ asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru) mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); - ret = sys_getrusage(who, &r); + ret = sys_getrusage(who, (struct rusage __user *) &r); set_fs(old_fs); if (ret) @@ -365,7 +367,10 @@ compat_sys_wait4(compat_pid_t pid, compat_uint_t __user *stat_addr, int options, mm_segment_t old_fs = get_fs(); set_fs (KERNEL_DS); - ret = sys_wait4(pid, stat_addr ? &status : NULL, options, &r); + ret = sys_wait4(pid, + (stat_addr ? + (unsigned int __user *) &status : NULL), + options, (struct rusage __user *) &r); set_fs (old_fs); if (ret > 0) { @@ -382,18 +387,18 @@ asmlinkage long compat_sys_sched_setaffinity(compat_pid_t pid, unsigned int len, compat_ulong_t __user *user_mask_ptr) { - unsigned long kernel_mask; + unsigned long kern_mask; mm_segment_t old_fs; int ret; - if (get_user(kernel_mask, user_mask_ptr)) + if (get_user(kern_mask, user_mask_ptr)) return -EFAULT; old_fs = get_fs(); set_fs(KERNEL_DS); ret = sys_sched_setaffinity(pid, - sizeof(kernel_mask), - &kernel_mask); + sizeof(kern_mask), + (unsigned long __user *) &kern_mask); set_fs(old_fs); return ret; @@ -402,20 +407,20 @@ asmlinkage long compat_sys_sched_setaffinity(compat_pid_t pid, asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid, unsigned int len, compat_ulong_t __user *user_mask_ptr) { - unsigned long kernel_mask; + unsigned long kern_mask; mm_segment_t old_fs; int ret; old_fs = get_fs(); set_fs(KERNEL_DS); ret = sys_sched_getaffinity(pid, - sizeof(kernel_mask), - &kernel_mask); + sizeof(kern_mask), + (unsigned long __user *) &kern_mask); set_fs(old_fs); if (ret > 0) { ret = sizeof(compat_ulong_t); - if (put_user(kernel_mask, user_mask_ptr)) + if (put_user(kern_mask, user_mask_ptr)) return -EFAULT; } @@ -454,7 +459,9 @@ long compat_timer_settime(timer_t timer_id, int flags, return -EFAULT; oldfs = get_fs(); set_fs(KERNEL_DS); - err = sys_timer_settime(timer_id, flags, &newts, &oldts); + err = sys_timer_settime(timer_id, flags, + (struct itimerspec __user *) &newts, + (struct itimerspec __user *) &oldts); set_fs(oldfs); if (!err && old && put_compat_itimerspec(old, &oldts)) return -EFAULT; @@ -467,9 +474,11 @@ long compat_timer_gettime(timer_t timer_id, long err; mm_segment_t oldfs; struct itimerspec ts; + oldfs = get_fs(); set_fs(KERNEL_DS); - err = sys_timer_gettime(timer_id, &ts); + err = sys_timer_gettime(timer_id, + (struct itimerspec __user *) &ts); set_fs(oldfs); if (!err && put_compat_itimerspec(setting, &ts)) return -EFAULT; @@ -482,11 +491,13 @@ long compat_clock_settime(clockid_t which_clock, long err; mm_segment_t oldfs; struct timespec ts; + if (get_compat_timespec(&ts, tp)) return -EFAULT; oldfs = get_fs(); set_fs(KERNEL_DS); - err = sys_clock_settime(which_clock, &ts); + err = sys_clock_settime(which_clock, + (struct timespec __user *) &ts); set_fs(oldfs); return err; } @@ -497,9 +508,11 @@ long compat_clock_gettime(clockid_t which_clock, long err; mm_segment_t oldfs; struct timespec ts; + oldfs = get_fs(); set_fs(KERNEL_DS); - err = sys_clock_gettime(which_clock, &ts); + err = sys_clock_gettime(which_clock, + (struct timespec __user *) &ts); set_fs(oldfs); if (!err && put_compat_timespec(&ts, tp)) return -EFAULT; @@ -512,9 +525,11 @@ long compat_clock_getres(clockid_t which_clock, long err; mm_segment_t oldfs; struct timespec ts; + oldfs = get_fs(); set_fs(KERNEL_DS); - err = sys_clock_getres(which_clock, &ts); + err = sys_clock_getres(which_clock, + (struct timespec __user *) &ts); set_fs(oldfs); if (!err && put_compat_timespec(&ts, tp)) return -EFAULT; @@ -528,11 +543,15 @@ long compat_clock_nanosleep(clockid_t which_clock, int flags, long err; mm_segment_t oldfs; struct timespec in, out; + if (get_compat_timespec(&in, rqtp)) return -EFAULT; + oldfs = get_fs(); - set_fs(KERNEL_DS); - err = sys_clock_nanosleep(which_clock, flags, &in, &out); + set_fs(KERNEL_DS); + err = sys_clock_nanosleep(which_clock, flags, + (struct timespec __user *) &in, + (struct timespec __user *) &out); set_fs(oldfs); if ((err == -ERESTART_RESTARTBLOCK) && rmtp && put_compat_timespec(&out, rmtp)) |