summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@kanga.twiddle.home>2004-09-20 12:02:23 -0700
committerRichard Henderson <rth@kanga.twiddle.home>2004-09-20 12:02:23 -0700
commitd34bd869e62a611ec4f4cf523adbbd1f72761532 (patch)
tree3b3935ff2d465830e4d591305435a79819e455de
parent7c91bb8781ac9e3a798d14ae85de034dcd640bea (diff)
[ALPHA] Add __user as necessary to fix sparse warnings.
-rw-r--r--arch/alpha/kernel/osf_sys.c71
-rw-r--r--arch/alpha/kernel/srmcons.c2
-rw-r--r--arch/alpha/kernel/traps.c2
-rw-r--r--arch/alpha/mm/fault.c2
4 files changed, 39 insertions, 38 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 66d4d081df86..dcad8d31d839 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -1110,46 +1110,47 @@ osf_getrusage(int who, struct rusage32 __user *ru)
return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
}
-asmlinkage int
-osf_wait4(pid_t pid, int __user *ustatus, int options, struct rusage32 __user *ur)
+asmlinkage long
+osf_wait4(pid_t pid, int __user *ustatus, int options,
+ struct rusage32 __user *ur)
{
- if (!ur) {
+ struct rusage r;
+ long ret, err;
+ mm_segment_t old_fs;
+
+ if (!ur)
return sys_wait4(pid, ustatus, options, NULL);
- } else {
- struct rusage r;
- int ret, status;
- mm_segment_t old_fs = get_fs();
+
+ old_fs = get_fs();
- set_fs (KERNEL_DS);
- ret = sys_wait4(pid, &status, options, &r);
- set_fs (old_fs);
+ set_fs (KERNEL_DS);
+ ret = sys_wait4(pid, ustatus, options, (struct rusage __user *) &r);
+ set_fs (old_fs);
- if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur)))
- return -EFAULT;
- __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec);
- __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec);
- __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
- __put_user(r.ru_stime.tv_usec, &ur->ru_stime.tv_usec);
- __put_user(r.ru_maxrss, &ur->ru_maxrss);
- __put_user(r.ru_ixrss, &ur->ru_ixrss);
- __put_user(r.ru_idrss, &ur->ru_idrss);
- __put_user(r.ru_isrss, &ur->ru_isrss);
- __put_user(r.ru_minflt, &ur->ru_minflt);
- __put_user(r.ru_majflt, &ur->ru_majflt);
- __put_user(r.ru_nswap, &ur->ru_nswap);
- __put_user(r.ru_inblock, &ur->ru_inblock);
- __put_user(r.ru_oublock, &ur->ru_oublock);
- __put_user(r.ru_msgsnd, &ur->ru_msgsnd);
- __put_user(r.ru_msgrcv, &ur->ru_msgrcv);
- __put_user(r.ru_nsignals, &ur->ru_nsignals);
- __put_user(r.ru_nvcsw, &ur->ru_nvcsw);
- if (__put_user(r.ru_nivcsw, &ur->ru_nivcsw))
- return -EFAULT;
+ if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur)))
+ return -EFAULT;
- if (ustatus && put_user(status, ustatus))
- return -EFAULT;
- return ret;
- }
+ err = 0;
+ err |= __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec);
+ err |= __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec);
+ err |= __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
+ err |= __put_user(r.ru_stime.tv_usec, &ur->ru_stime.tv_usec);
+ err |= __put_user(r.ru_maxrss, &ur->ru_maxrss);
+ err |= __put_user(r.ru_ixrss, &ur->ru_ixrss);
+ err |= __put_user(r.ru_idrss, &ur->ru_idrss);
+ err |= __put_user(r.ru_isrss, &ur->ru_isrss);
+ err |= __put_user(r.ru_minflt, &ur->ru_minflt);
+ err |= __put_user(r.ru_majflt, &ur->ru_majflt);
+ err |= __put_user(r.ru_nswap, &ur->ru_nswap);
+ err |= __put_user(r.ru_inblock, &ur->ru_inblock);
+ err |= __put_user(r.ru_oublock, &ur->ru_oublock);
+ err |= __put_user(r.ru_msgsnd, &ur->ru_msgsnd);
+ err |= __put_user(r.ru_msgrcv, &ur->ru_msgrcv);
+ err |= __put_user(r.ru_nsignals, &ur->ru_nsignals);
+ err |= __put_user(r.ru_nvcsw, &ur->ru_nvcsw);
+ err |= __put_user(r.ru_nivcsw, &ur->ru_nivcsw);
+
+ return err ? err : ret;
}
/*
diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c
index 48f408a3bb10..49c8c97ed82d 100644
--- a/arch/alpha/kernel/srmcons.c
+++ b/arch/alpha/kernel/srmcons.c
@@ -146,7 +146,7 @@ srmcons_write(struct tty_struct *tty, int from_user,
if (c > sizeof(tmp))
c = sizeof(tmp);
- c -= copy_from_user(tmp, buf, c);
+ c -= copy_from_user(tmp, (const char __user *) buf, c);
if (!c) {
printk("%s: EFAULT (count %d)\n",
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
index 75a7fad3fd49..fd7bd17cc960 100644
--- a/arch/alpha/kernel/traps.c
+++ b/arch/alpha/kernel/traps.c
@@ -111,7 +111,7 @@ dik_show_code(unsigned int *pc)
printk("Code:");
for (i = -6; i < 2; i++) {
unsigned int insn;
- if (__get_user(insn, pc+i))
+ if (__get_user(insn, (unsigned int __user *)pc + i))
break;
printk("%c%08x%c", i ? ' ' : '<', insn, i ? ' ' : '>');
}
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index a0b969ddffe1..64ace5a9cd3d 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -98,7 +98,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
by ignoring such an instruction. */
if (cause == 0) {
unsigned int insn;
- __get_user(insn, (unsigned int *)regs->pc);
+ __get_user(insn, (unsigned int __user *)regs->pc);
if ((insn >> 21 & 0x1f) == 0x1f &&
/* ldq ldl ldt lds ldg ldf ldwu ldbu */
(1ul << (insn >> 26) & 0x30f00001400ul)) {