From: Jeff Dike Lots of sparse annotations from Chris Wright. Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton --- 25-akpm/arch/um/drivers/mconsole_kern.c | 2 +- 25-akpm/arch/um/drivers/ubd_kern.c | 10 +++++----- 25-akpm/arch/um/include/um_uaccess.h | 14 +++++++------- 25-akpm/arch/um/include/uml_uaccess.h | 2 +- 25-akpm/arch/um/kernel/checksum.c | 12 ++++++------ 25-akpm/arch/um/kernel/exec_kern.c | 10 ++++++---- 25-akpm/arch/um/kernel/exitcode.c | 2 +- 25-akpm/arch/um/kernel/irq.c | 4 ++-- 25-akpm/arch/um/kernel/mem.c | 4 ++-- 25-akpm/arch/um/kernel/process_kern.c | 8 ++++---- 25-akpm/arch/um/kernel/ptrace.c | 15 ++++++++------- 25-akpm/arch/um/kernel/signal_kern.c | 2 +- 25-akpm/arch/um/kernel/skas/uaccess.c | 22 +++++++++++----------- 25-akpm/arch/um/kernel/syscall_kern.c | 7 +++---- 25-akpm/arch/um/kernel/time_kern.c | 6 +++--- 25-akpm/arch/um/kernel/tt/uaccess.c | 12 ++++++------ 25-akpm/arch/um/sys-i386/ldt.c | 12 +++++++----- 25-akpm/arch/um/sys-i386/ptrace.c | 24 +++++++++++++----------- 25-akpm/arch/um/sys-i386/sigcontext.c | 3 +-- 25-akpm/arch/um/sys-i386/signal.c | 2 +- 25-akpm/arch/um/sys-i386/syscalls.c | 16 +++++++++------- 25-akpm/arch/um/sys-x86_64/signal.c | 2 +- 25-akpm/include/asm-um/uaccess.h | 4 ++-- 23 files changed, 101 insertions(+), 94 deletions(-) diff -puN arch/um/drivers/mconsole_kern.c~uml-sparse-annotations arch/um/drivers/mconsole_kern.c --- 25/arch/um/drivers/mconsole_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.119648768 -0800 +++ 25-akpm/arch/um/drivers/mconsole_kern.c 2005-01-09 23:44:23.159642688 -0800 @@ -499,7 +499,7 @@ int mconsole_init(void) __initcall(mconsole_init); -static int write_proc_mconsole(struct file *file, const char *buffer, +static int write_proc_mconsole(struct file *file, const char __user *buffer, unsigned long count, void *data) { char *buf; diff -puN arch/um/drivers/ubd_kern.c~uml-sparse-annotations arch/um/drivers/ubd_kern.c --- 25/arch/um/drivers/ubd_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.121648464 -0800 +++ 25-akpm/arch/um/drivers/ubd_kern.c 2005-01-09 23:44:23.160642536 -0800 @@ -172,7 +172,7 @@ static struct proc_dir_entry *proc_ide = static void make_proc_ide(void) { - proc_ide_root = proc_mkdir("ide", 0); + proc_ide_root = proc_mkdir("ide", NULL); proc_ide = proc_mkdir("ide0", proc_ide_root); } @@ -1087,7 +1087,7 @@ static void do_ubd_request(request_queue static int ubd_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned long arg) { - struct hd_geometry *loc = (struct hd_geometry *) arg; + struct hd_geometry __user *loc = (struct hd_geometry __user *) arg; struct ubd *dev = inode->i_bdev->bd_disk->private_data; struct hd_driveid ubd_id = { .cyls = 0, @@ -1108,19 +1108,19 @@ static int ubd_ioctl(struct inode * inod case HDIO_GET_IDENTITY: ubd_id.cyls = dev->size / (128 * 32 * 512); - if(copy_to_user((char *) arg, (char *) &ubd_id, + if(copy_to_user((char __user *) arg, (char *) &ubd_id, sizeof(ubd_id))) return(-EFAULT); return(0); case CDROMVOLREAD: - if(copy_from_user(&volume, (char *) arg, sizeof(volume))) + if(copy_from_user(&volume, (char __user *) arg, sizeof(volume))) return(-EFAULT); volume.channel0 = 255; volume.channel1 = 255; volume.channel2 = 255; volume.channel3 = 255; - if(copy_to_user((char *) arg, &volume, sizeof(volume))) + if(copy_to_user((char __user *) arg, &volume, sizeof(volume))) return(-EFAULT); return(0); } diff -puN arch/um/include/uml_uaccess.h~uml-sparse-annotations arch/um/include/uml_uaccess.h --- 25/arch/um/include/uml_uaccess.h~uml-sparse-annotations 2005-01-09 23:44:23.122648312 -0800 +++ 25-akpm/arch/um/include/uml_uaccess.h 2005-01-09 23:44:23.161642384 -0800 @@ -7,7 +7,7 @@ #define __UML_UACCESS_H__ extern int __do_copy_to_user(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher); + void **fault_addr, void **fault_catcher); extern unsigned long __do_user_copy(void *to, const void *from, int n, void **fault_addr, void **fault_catcher, void (*op)(void *to, const void *from, diff -puN arch/um/include/um_uaccess.h~uml-sparse-annotations arch/um/include/um_uaccess.h --- 25/arch/um/include/um_uaccess.h~uml-sparse-annotations 2005-01-09 23:44:23.124648008 -0800 +++ 25-akpm/arch/um/include/um_uaccess.h 2005-01-09 23:44:23.160642536 -0800 @@ -20,19 +20,19 @@ #define access_ok(type, addr, size) \ CHOOSE_MODE_PROC(access_ok_tt, access_ok_skas, type, addr, size) -static inline int verify_area(int type, const void * addr, unsigned long size) +static inline int verify_area(int type, const void __user *addr, unsigned long size) { - return(CHOOSE_MODE_PROC(verify_area_tt, verify_area_skas, type, addr, + return (CHOOSE_MODE_PROC(verify_area_tt, verify_area_skas, type, addr, size)); } -static inline int copy_from_user(void *to, const void *from, int n) +static inline int copy_from_user(void *to, const void __user *from, int n) { return(CHOOSE_MODE_PROC(copy_from_user_tt, copy_from_user_skas, to, from, n)); } -static inline int copy_to_user(void *to, const void *from, int n) +static inline int copy_to_user(void __user *to, const void *from, int n) { return(CHOOSE_MODE_PROC(copy_to_user_tt, copy_to_user_skas, to, from, n)); @@ -57,7 +57,7 @@ static inline int copy_to_user(void *to, * and returns @count. */ -static inline int strncpy_from_user(char *dst, const char *src, int count) +static inline int strncpy_from_user(char *dst, const char __user *src, int count) { return(CHOOSE_MODE_PROC(strncpy_from_user_tt, strncpy_from_user_skas, dst, src, count)); @@ -89,7 +89,7 @@ static inline int __clear_user(void *mem * Returns number of bytes that could not be cleared. * On success, this will be zero. */ -static inline int clear_user(void *mem, int len) +static inline int clear_user(void __user *mem, int len) { return(CHOOSE_MODE_PROC(clear_user_tt, clear_user_skas, mem, len)); } @@ -105,7 +105,7 @@ static inline int clear_user(void *mem, * On exception, returns 0. * If the string is too long, returns a value greater than @n. */ -static inline int strnlen_user(const void *str, long len) +static inline int strnlen_user(const void __user *str, long len) { return(CHOOSE_MODE_PROC(strnlen_user_tt, strnlen_user_skas, str, len)); } diff -puN arch/um/kernel/checksum.c~uml-sparse-annotations arch/um/kernel/checksum.c --- 25/arch/um/kernel/checksum.c~uml-sparse-annotations 2005-01-09 23:44:23.125647856 -0800 +++ 25-akpm/arch/um/kernel/checksum.c 2005-01-09 23:44:23.161642384 -0800 @@ -2,16 +2,16 @@ #include "linux/errno.h" #include "linux/module.h" -extern unsigned int arch_csum_partial(const char *buff, int len, int sum); +unsigned int arch_csum_partial(const char *buff, int len, int sum); -extern unsigned int csum_partial(char *buff, int len, int sum) +unsigned int csum_partial(char *buff, int len, int sum) { - return(arch_csum_partial(buff, len, sum)); + return arch_csum_partial(buff, len, sum); } EXPORT_SYMBOL(csum_partial); -unsigned int csum_partial_copy_to(const char *src, char *dst, int len, +unsigned int csum_partial_copy_to(const char *src, char __user *dst, int len, int sum, int *err_ptr) { if(copy_to_user(dst, src, len)){ @@ -22,7 +22,7 @@ unsigned int csum_partial_copy_to(const return(arch_csum_partial(src, len, sum)); } -unsigned int csum_partial_copy_from(const char *src, char *dst, int len, +unsigned int csum_partial_copy_from(const char __user *src, char *dst, int len, int sum, int *err_ptr) { if(copy_from_user(dst, src, len)){ @@ -30,7 +30,7 @@ unsigned int csum_partial_copy_from(cons return(-1); } - return(arch_csum_partial(dst, len, sum)); + return arch_csum_partial(dst, len, sum); } /* diff -puN arch/um/kernel/exec_kern.c~uml-sparse-annotations arch/um/kernel/exec_kern.c --- 25/arch/um/kernel/exec_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.127647552 -0800 +++ 25-akpm/arch/um/kernel/exec_kern.c 2005-01-09 23:44:23.162642232 -0800 @@ -34,7 +34,8 @@ void start_thread(struct pt_regs *regs, extern void log_exec(char **argv, void *tty); -static long execve1(char *file, char **argv, char **env) +static long execve1(char *file, char __user * __user *argv, + char *__user __user *env) { long error; @@ -51,7 +52,7 @@ static long execve1(char *file, char **a return(error); } -long um_execve(char *file, char **argv, char **env) +long um_execve(char *file, char __user *__user *argv, char __user *__user *env) { long err; @@ -61,13 +62,14 @@ long um_execve(char *file, char **argv, return(err); } -long sys_execve(char *file, char **argv, char **env) +long sys_execve(char *file, char __user *__user *argv, + char __user *__user *env) { long error; char *filename; lock_kernel(); - filename = getname((char *) file); + filename = getname((char __user *) file); error = PTR_ERR(filename); if (IS_ERR(filename)) goto out; error = execve1(filename, argv, env); diff -puN arch/um/kernel/exitcode.c~uml-sparse-annotations arch/um/kernel/exitcode.c --- 25/arch/um/kernel/exitcode.c~uml-sparse-annotations 2005-01-09 23:44:23.128647400 -0800 +++ 25-akpm/arch/um/kernel/exitcode.c 2005-01-09 23:44:23.162642232 -0800 @@ -27,7 +27,7 @@ static int read_proc_exitcode(char *page return(len); } -static int write_proc_exitcode(struct file *file, const char *buffer, +static int write_proc_exitcode(struct file *file, const char __user *buffer, unsigned long count, void *data) { char *end, buf[sizeof("nnnnn\0")]; diff -puN arch/um/kernel/irq.c~uml-sparse-annotations arch/um/kernel/irq.c --- 25/arch/um/kernel/irq.c~uml-sparse-annotations 2005-01-09 23:44:23.129647248 -0800 +++ 25-akpm/arch/um/kernel/irq.c 2005-01-09 23:44:23.163642080 -0800 @@ -152,13 +152,13 @@ void __init init_IRQ(void) int i; irq_desc[TIMER_IRQ].status = IRQ_DISABLED; - irq_desc[TIMER_IRQ].action = 0; + irq_desc[TIMER_IRQ].action = NULL; irq_desc[TIMER_IRQ].depth = 1; irq_desc[TIMER_IRQ].handler = &SIGVTALRM_irq_type; enable_irq(TIMER_IRQ); for(i=1;ithread.fault_addr = (void *) addr; - if(__do_copy_to_user((void *) addr, &zero, + if(__do_copy_to_user((void __user *) addr, &zero, sizeof(zero), ¤t->thread.fault_addr, ¤t->thread.fault_catcher)){ diff -puN arch/um/kernel/process_kern.c~uml-sparse-annotations arch/um/kernel/process_kern.c --- 25/arch/um/kernel/process_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.138645880 -0800 +++ 25-akpm/arch/um/kernel/process_kern.c 2005-01-09 23:44:23.164641928 -0800 @@ -368,22 +368,22 @@ void *get_init_task(void) return(&init_thread_union.thread_info.task); } -int copy_to_user_proc(void *to, void *from, int size) +int copy_to_user_proc(void __user *to, void *from, int size) { return(copy_to_user(to, from, size)); } -int copy_from_user_proc(void *to, void *from, int size) +int copy_from_user_proc(void *to, void __user *from, int size) { return(copy_from_user(to, from, size)); } -int clear_user_proc(void *buf, int size) +int clear_user_proc(void __user *buf, int size) { return(clear_user(buf, size)); } -int strlen_user_proc(char *str) +int strlen_user_proc(char __user *str) { return(strlen_user(str)); } diff -puN arch/um/kernel/ptrace.c~uml-sparse-annotations arch/um/kernel/ptrace.c --- 25/arch/um/kernel/ptrace.c~uml-sparse-annotations 2005-01-09 23:44:23.139645728 -0800 +++ 25-akpm/arch/um/kernel/ptrace.c 2005-01-09 23:44:23.165641776 -0800 @@ -81,7 +81,7 @@ long sys_ptrace(long request, long pid, copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); if (copied != sizeof(tmp)) break; - ret = put_user(tmp,(unsigned long *) data); + ret = put_user(tmp, (unsigned long __user *) data); break; } @@ -103,7 +103,7 @@ long sys_ptrace(long request, long pid, addr = addr >> 2; tmp = child->thread.arch.debugregs[addr]; } - ret = put_user(tmp, (unsigned long *) data); + ret = put_user(tmp, (unsigned long __user *) data); break; } @@ -201,7 +201,8 @@ long sys_ptrace(long request, long pid, break; } for ( i = 0; i < FRAME_SIZE_OFFSET; i += sizeof(long) ) { - __put_user(getreg(child, i), (unsigned long *) data); + __put_user(getreg(child, i), + (unsigned long __user *) data); data += sizeof(long); } ret = 0; @@ -217,7 +218,7 @@ long sys_ptrace(long request, long pid, break; } for ( i = 0; i < FRAME_SIZE_OFFSET; i += sizeof(long) ) { - __get_user(tmp, (unsigned long *) data); + __get_user(tmp, (unsigned long __user *) data); putreg(child, i, tmp); data += sizeof(long); } @@ -251,14 +252,14 @@ long sys_ptrace(long request, long pid, fault = ((struct ptrace_faultinfo) { .is_write = child->thread.err, .addr = child->thread.cr2 }); - ret = copy_to_user((unsigned long *) data, &fault, + ret = copy_to_user((unsigned long __user *) data, &fault, sizeof(fault)); if(ret) break; break; } case PTRACE_SIGPENDING: - ret = copy_to_user((unsigned long *) data, + ret = copy_to_user((unsigned long __user *) data, &child->pending.signal, sizeof(child->pending.signal)); break; @@ -266,7 +267,7 @@ long sys_ptrace(long request, long pid, case PTRACE_LDT: { struct ptrace_ldt ldt; - if(copy_from_user(&ldt, (unsigned long *) data, + if(copy_from_user(&ldt, (unsigned long __user *) data, sizeof(ldt))){ ret = -EIO; break; diff -puN arch/um/kernel/signal_kern.c~uml-sparse-annotations arch/um/kernel/signal_kern.c --- 25/arch/um/kernel/signal_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.141645424 -0800 +++ 25-akpm/arch/um/kernel/signal_kern.c 2005-01-09 23:44:23.165641776 -0800 @@ -196,7 +196,7 @@ long sys_rt_sigsuspend(sigset_t __user * } } -long sys_sigaltstack(const stack_t *uss, stack_t *uoss) +long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) { return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs))); } diff -puN arch/um/kernel/skas/uaccess.c~uml-sparse-annotations arch/um/kernel/skas/uaccess.c --- 25/arch/um/kernel/skas/uaccess.c~uml-sparse-annotations 2005-01-09 23:44:23.142645272 -0800 +++ 25-akpm/arch/um/kernel/skas/uaccess.c 2005-01-09 23:44:23.166641624 -0800 @@ -132,10 +132,10 @@ static int copy_chunk_from_user(unsigned return(0); } -int copy_from_user_skas(void *to, const void *from, int n) +int copy_from_user_skas(void *to, const void __user *from, int n) { if(segment_eq(get_fs(), KERNEL_DS)){ - memcpy(to, from, n); + memcpy(to, (__force void*)from, n); return(0); } @@ -153,10 +153,10 @@ static int copy_chunk_to_user(unsigned l return(0); } -int copy_to_user_skas(void *to, const void *from, int n) +int copy_to_user_skas(void __user *to, const void *from, int n) { if(segment_eq(get_fs(), KERNEL_DS)){ - memcpy(to, from, n); + memcpy((__force void*)to, from, n); return(0); } @@ -179,13 +179,13 @@ static int strncpy_chunk_from_user(unsig return(0); } -int strncpy_from_user_skas(char *dst, const char *src, int count) +int strncpy_from_user_skas(char *dst, const char __user *src, int count) { int n; char *ptr = dst; if(segment_eq(get_fs(), KERNEL_DS)){ - strncpy(dst, src, count); + strncpy(dst, (__force void*)src, count); return(strnlen(dst, count)); } @@ -205,15 +205,15 @@ static int clear_chunk(unsigned long add return(0); } -int __clear_user_skas(void *mem, int len) +int __clear_user_skas(void __user *mem, int len) { return(buffer_op((unsigned long) mem, len, 1, clear_chunk, NULL)); } -int clear_user_skas(void *mem, int len) +int clear_user_skas(void __user *mem, int len) { if(segment_eq(get_fs(), KERNEL_DS)){ - memset(mem, 0, len); + memset((__force void*)mem, 0, len); return(0); } @@ -233,12 +233,12 @@ static int strnlen_chunk(unsigned long s return(0); } -int strnlen_user_skas(const void *str, int len) +int strnlen_user_skas(const void __user *str, int len) { int count = 0, n; if(segment_eq(get_fs(), KERNEL_DS)) - return(strnlen(str, len) + 1); + return(strnlen((__force char*)str, len) + 1); n = buffer_op((unsigned long) str, len, 0, strnlen_chunk, &count); if(n == 0) diff -puN arch/um/kernel/syscall_kern.c~uml-sparse-annotations arch/um/kernel/syscall_kern.c --- 25/arch/um/kernel/syscall_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.143645120 -0800 +++ 25-akpm/arch/um/kernel/syscall_kern.c 2005-01-09 23:44:23.167641472 -0800 @@ -27,10 +27,9 @@ /* Unlocked, I don't care if this is a bit off */ int nsyscalls = 0; -long um_mount(char * dev_name, char * dir_name, char * type, - unsigned long new_flags, void * data) +long um_mount(char __user * dev_name, char __user * dir_name, + char __user * type, unsigned long new_flags, void __user * data) { - if(type == NULL) type = ""; return(sys_mount(dev_name, dir_name, type, new_flags, data)); } @@ -96,7 +95,7 @@ long old_mmap(unsigned long addr, unsign * sys_pipe() is the normal C calling standard for creating * a pipe. It's not the way unix traditionally does this, though. */ -long sys_pipe(unsigned long * fildes) +long sys_pipe(unsigned long __user * fildes) { int fd[2]; long error; diff -puN arch/um/kernel/time_kern.c~uml-sparse-annotations arch/um/kernel/time_kern.c --- 25/arch/um/kernel/time_kern.c~uml-sparse-annotations 2005-01-09 23:44:23.144644968 -0800 +++ 25-akpm/arch/um/kernel/time_kern.c 2005-01-09 23:44:23.167641472 -0800 @@ -111,19 +111,19 @@ irqreturn_t um_timer(int irq, void *dev, return(IRQ_HANDLED); } -long um_time(int * tloc) +long um_time(int __user *tloc) { struct timeval now; do_gettimeofday(&now); if (tloc) { - if (put_user(now.tv_sec,tloc)) + if (put_user(now.tv_sec, tloc)) now.tv_sec = -EFAULT; } return now.tv_sec; } -long um_stime(int * tptr) +long um_stime(int __user *tptr) { int value; struct timespec new; diff -puN arch/um/kernel/tt/uaccess.c~uml-sparse-annotations arch/um/kernel/tt/uaccess.c --- 25/arch/um/kernel/tt/uaccess.c~uml-sparse-annotations 2005-01-09 23:44:23.146644664 -0800 +++ 25-akpm/arch/um/kernel/tt/uaccess.c 2005-01-09 23:44:23.168641320 -0800 @@ -6,7 +6,7 @@ #include "linux/sched.h" #include "asm/uaccess.h" -int copy_from_user_tt(void *to, const void *from, int n) +int copy_from_user_tt(void *to, const void __user *from, int n) { if(!access_ok_tt(VERIFY_READ, from, n)) return(n); @@ -15,7 +15,7 @@ int copy_from_user_tt(void *to, const vo ¤t->thread.fault_catcher)); } -int copy_to_user_tt(void *to, const void *from, int n) +int copy_to_user_tt(void __user *to, const void *from, int n) { if(!access_ok_tt(VERIFY_WRITE, to, n)) return(n); @@ -24,7 +24,7 @@ int copy_to_user_tt(void *to, const void ¤t->thread.fault_catcher)); } -int strncpy_from_user_tt(char *dst, const char *src, int count) +int strncpy_from_user_tt(char *dst, const char __user *src, int count) { int n; @@ -38,14 +38,14 @@ int strncpy_from_user_tt(char *dst, cons return(n); } -int __clear_user_tt(void *mem, int len) +int __clear_user_tt(void __user *mem, int len) { return(__do_clear_user(mem, len, ¤t->thread.fault_addr, ¤t->thread.fault_catcher)); } -int clear_user_tt(void *mem, int len) +int clear_user_tt(void __user *mem, int len) { if(!access_ok_tt(VERIFY_WRITE, mem, len)) return(len); @@ -54,7 +54,7 @@ int clear_user_tt(void *mem, int len) ¤t->thread.fault_catcher)); } -int strnlen_user_tt(const void *str, int len) +int strnlen_user_tt(const void __user *str, int len) { return(__do_strnlen_user(str, len, ¤t->thread.fault_addr, diff -puN arch/um/sys-i386/ldt.c~uml-sparse-annotations arch/um/sys-i386/ldt.c --- 25/arch/um/sys-i386/ldt.c~uml-sparse-annotations 2005-01-09 23:44:23.147644512 -0800 +++ 25-akpm/arch/um/sys-i386/ldt.c 2005-01-09 23:44:23.168641320 -0800 @@ -15,10 +15,12 @@ extern int modify_ldt(int func, void *pt /* XXX this needs copy_to_user and copy_from_user */ -int sys_modify_ldt_tt(int func, void *ptr, unsigned long bytecount) +int sys_modify_ldt_tt(int func, void __user *ptr, unsigned long bytecount) { - if(verify_area(VERIFY_READ, ptr, bytecount)) return(-EFAULT); - return(modify_ldt(func, ptr, bytecount)); + if (verify_area(VERIFY_READ, ptr, bytecount)) + return -EFAULT; + + return modify_ldt(func, ptr, bytecount); } #endif @@ -27,7 +29,7 @@ extern int userspace_pid; #include "skas_ptrace.h" -int sys_modify_ldt_skas(int func, void *ptr, unsigned long bytecount) +int sys_modify_ldt_skas(int func, void __user *ptr, unsigned long bytecount) { struct ptrace_ldt ldt; void *buf; @@ -76,7 +78,7 @@ int sys_modify_ldt_skas(int func, void * } #endif -int sys_modify_ldt(int func, void *ptr, unsigned long bytecount) +int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) { return(CHOOSE_MODE_PROC(sys_modify_ldt_tt, sys_modify_ldt_skas, func, ptr, bytecount)); diff -puN arch/um/sys-i386/ptrace.c~uml-sparse-annotations arch/um/sys-i386/ptrace.c --- 25/arch/um/sys-i386/ptrace.c~uml-sparse-annotations 2005-01-09 23:44:23.148644360 -0800 +++ 25-akpm/arch/um/sys-i386/ptrace.c 2005-01-09 23:44:23.169641168 -0800 @@ -3,6 +3,8 @@ * Licensed under the GPL */ +#include +#include #include "linux/sched.h" #include "asm/elf.h" #include "asm/ptrace.h" @@ -22,7 +24,7 @@ int is_syscall(unsigned long addr) unsigned short instr; int n; - n = copy_from_user(&instr, (void *) addr, sizeof(instr)); + n = copy_from_user(&instr, (void __user *) addr, sizeof(instr)); if(n){ printk("is_syscall : failed to read instruction from 0x%lx\n", addr); @@ -175,12 +177,12 @@ static inline unsigned long twd_fxsr_to_ */ #ifdef CONFIG_MODE_TT -static inline int convert_fxsr_to_user_tt(struct _fpstate *buf, +static inline int convert_fxsr_to_user_tt(struct _fpstate __user *buf, struct pt_regs *regs) { struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs)); unsigned long env[7]; - struct _fpreg *to; + struct _fpreg __user *to; struct _fpxreg *from; int i; @@ -205,7 +207,7 @@ static inline int convert_fxsr_to_user_t } #endif -static inline int convert_fxsr_to_user(struct _fpstate *buf, +static inline int convert_fxsr_to_user(struct _fpstate __user *buf, struct pt_regs *regs) { return(CHOOSE_MODE(convert_fxsr_to_user_tt(buf, regs), 0)); @@ -213,12 +215,12 @@ static inline int convert_fxsr_to_user(s #ifdef CONFIG_MODE_TT static inline int convert_fxsr_from_user_tt(struct pt_regs *regs, - struct _fpstate *buf) + struct _fpstate __user *buf) { struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs)); unsigned long env[7]; struct _fpxreg *to; - struct _fpreg *from; + struct _fpreg __user *from; int i; if ( __copy_from_user( env, buf, 7 * sizeof(long) ) ) @@ -244,7 +246,7 @@ static inline int convert_fxsr_from_user #endif static inline int convert_fxsr_from_user(struct pt_regs *regs, - struct _fpstate *buf) + struct _fpstate __user *buf) { return(CHOOSE_MODE(convert_fxsr_from_user_tt(regs, buf), 0)); } @@ -253,7 +255,7 @@ int get_fpregs(unsigned long buf, struct { int err; - err = convert_fxsr_to_user((struct _fpstate *) buf, + err = convert_fxsr_to_user((struct _fpstate __user *) buf, &child->thread.regs); if(err) return(-EFAULT); else return(0); @@ -264,7 +266,7 @@ int set_fpregs(unsigned long buf, struct int err; err = convert_fxsr_from_user(&child->thread.regs, - (struct _fpstate *) buf); + (struct _fpstate __user *) buf); if(err) return(-EFAULT); else return(0); } @@ -276,7 +278,7 @@ int get_fpxregs_tt(unsigned long buf, st struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs)); int err; - err = __copy_to_user((void *) buf, fxsave, + err = __copy_to_user((void __user *) buf, fxsave, sizeof(struct user_fxsr_struct)); if(err) return -EFAULT; else return 0; @@ -295,7 +297,7 @@ int set_fpxregs_tt(unsigned long buf, st struct i387_fxsave_struct *fxsave = SC_FXSR_ENV(PT_REGS_SC(regs)); int err; - err = __copy_from_user(fxsave, (void *) buf, + err = __copy_from_user(fxsave, (void __user *) buf, sizeof(struct user_fxsr_struct) ); if(err) return -EFAULT; else return 0; diff -puN arch/um/sys-i386/sigcontext.c~uml-sparse-annotations arch/um/sys-i386/sigcontext.c --- 25/arch/um/sys-i386/sigcontext.c~uml-sparse-annotations 2005-01-09 23:44:23.150644056 -0800 +++ 25-akpm/arch/um/sys-i386/sigcontext.c 2005-01-09 23:44:23.170641016 -0800 @@ -22,8 +22,7 @@ void sc_to_sc(void *to_ptr, void *from_p unsigned long *sc_sigmask(void *sc_ptr) { struct sigcontext *sc = sc_ptr; - - return(&sc->oldmask); + return &sc->oldmask; } int sc_get_fpregs(unsigned long buf, void *sc_ptr) diff -puN arch/um/sys-i386/signal.c~uml-sparse-annotations arch/um/sys-i386/signal.c --- 25/arch/um/sys-i386/signal.c~uml-sparse-annotations 2005-01-09 23:44:23.151643904 -0800 +++ 25-akpm/arch/um/sys-i386/signal.c 2005-01-09 23:44:23.170641016 -0800 @@ -146,7 +146,7 @@ int copy_sc_to_user_tt(struct sigcontext } #endif -static int copy_sc_from_user(struct pt_regs *to, void *from) +static int copy_sc_from_user(struct pt_regs *to, void __user *from) { int ret; diff -puN arch/um/sys-i386/syscalls.c~uml-sparse-annotations arch/um/sys-i386/syscalls.c --- 25/arch/um/sys-i386/syscalls.c~uml-sparse-annotations 2005-01-09 23:44:23.152643752 -0800 +++ 25-akpm/arch/um/sys-i386/syscalls.c 2005-01-09 23:44:23.171640864 -0800 @@ -30,7 +30,7 @@ extern int old_mmap(unsigned long addr, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long offset); -long old_mmap_i386(struct mmap_arg_struct *arg) +long old_mmap_i386(struct mmap_arg_struct __user *arg) { struct mmap_arg_struct a; int err = -EFAULT; @@ -45,11 +45,13 @@ long old_mmap_i386(struct mmap_arg_struc struct sel_arg_struct { unsigned long n; - fd_set *inp, *outp, *exp; - struct timeval *tvp; + fd_set __user *inp; + fd_set __user *outp; + fd_set __user *exp; + struct timeval __user *tvp; }; -long old_select(struct sel_arg_struct *arg) +long old_select(struct sel_arg_struct __user *arg) { struct sel_arg_struct a; @@ -62,8 +64,8 @@ long old_select(struct sel_arg_struct *a /* The i386 version skips reading from %esi, the fourth argument. So we must do * this, too. */ -long sys_clone(unsigned long clone_flags, unsigned long newsp, int *parent_tid, - int unused, int *child_tid) +long sys_clone(unsigned long clone_flags, unsigned long newsp, + int __user *parent_tid, int unused, int __user *child_tid) { long ret; @@ -86,7 +88,7 @@ long sys_clone(unsigned long clone_flags * This is really horribly ugly. */ long sys_ipc (uint call, int first, int second, - int third, void *ptr, long fifth) + int third, void *__user ptr, long fifth) { int version, ret; diff -puN arch/um/sys-x86_64/signal.c~uml-sparse-annotations arch/um/sys-x86_64/signal.c --- 25/arch/um/sys-x86_64/signal.c~uml-sparse-annotations 2005-01-09 23:44:23.153643600 -0800 +++ 25-akpm/arch/um/sys-x86_64/signal.c 2005-01-09 23:44:23.171640864 -0800 @@ -128,7 +128,7 @@ int copy_sc_to_user_tt(struct sigcontext #endif -static int copy_sc_from_user(struct pt_regs *to, void *from) +static int copy_sc_from_user(struct pt_regs *to, void __user *from) { int ret; diff -puN include/asm-um/uaccess.h~uml-sparse-annotations include/asm-um/uaccess.h --- 25/include/asm-um/uaccess.h~uml-sparse-annotations 2005-01-09 23:44:23.155643296 -0800 +++ 25-akpm/include/asm-um/uaccess.h 2005-01-09 23:44:23.172640712 -0800 @@ -55,7 +55,7 @@ #define get_user(x, ptr) \ ({ \ - const __typeof__((*(ptr))) *private_ptr = (ptr); \ + const __typeof__((*(ptr))) __user *private_ptr = (ptr); \ (access_ok(VERIFY_READ, private_ptr, sizeof(*private_ptr)) ? \ __get_user(x, private_ptr) : ((x) = 0, -EFAULT)); \ }) @@ -75,7 +75,7 @@ #define put_user(x, ptr) \ ({ \ - __typeof__(*(ptr)) *private_ptr = (ptr); \ + __typeof__(*(ptr)) __user *private_ptr = (ptr); \ (access_ok(VERIFY_WRITE, private_ptr, sizeof(*private_ptr)) ? \ __put_user(x, private_ptr) : -EFAULT); \ }) _