diff options
| author | Alexander Viro <viro@www.linux.org.uk> | 2004-07-30 08:48:39 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-07-30 08:48:39 -0700 |
| commit | 4e3b04fb1cc62dbfed323ceb6ccf565ae037a4e4 (patch) | |
| tree | edd6c3922659bd66b14ae8235a3cec715d5aa450 | |
| parent | 1fe595bb588ac1d4b10fdf4cdd0f959e2ba880dd (diff) | |
[PATCH] ARM initial annotations
Usual set of initial annotations for a platform.
Signed-off-by: Al Viro <viro@parcelfarce.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/arm/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/apm.c | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/signal.c | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/sys_arm.c | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/traps.c | 14 | ||||
| -rw-r--r-- | arch/arm/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/arm/mm/init.c | 2 | ||||
| -rw-r--r-- | include/asm-arm/ipc.h | 2 | ||||
| -rw-r--r-- | include/asm-arm/signal.h | 12 | ||||
| -rw-r--r-- | include/asm-arm/uaccess.h | 7 |
11 files changed, 29 insertions, 20 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index aeafdd7a0566..613bb1b0ac1f 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -58,6 +58,8 @@ tune-$(CONFIG_CPU_V6) :=-mtune=strongarm CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float -Wa,-mno-fpu +CHECK := $(CHECK) -D__arm__=1 + #Default value DATAADDR := . diff --git a/arch/arm/kernel/apm.c b/arch/arm/kernel/apm.c index 7849b28fcdc8..a64f78defdd4 100644 --- a/arch/arm/kernel/apm.c +++ b/arch/arm/kernel/apm.c @@ -206,7 +206,7 @@ static int apm_suspend(void) return err; } -static ssize_t apm_read(struct file *fp, char *buf, size_t count, loff_t *ppos) +static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos) { struct apm_user *as = fp->private_data; apm_event_t event; diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index fd3d5b2bad26..d4195fd5b889 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c @@ -485,7 +485,7 @@ void ptrace_break(struct task_struct *tsk, struct pt_regs *regs) info.si_signo = SIGTRAP; info.si_errno = 0; info.si_code = TRAP_BRKPT; - info.si_addr = (void *)instruction_pointer(regs); + info.si_addr = (void __user *)instruction_pointer(regs); force_sig_info(SIGTRAP, &info, tsk); } diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 4aef80895ded..d214e8d494f6 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -419,7 +419,7 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info, __put_user_error(NULL, &frame->uc.uc_link, err); memset(&stack, 0, sizeof(stack)); - stack.ss_sp = (void *)current->sas_ss_sp; + stack.ss_sp = (void __user *)current->sas_ss_sp; stack.ss_flags = sas_ss_flags(regs->ARM_sp); stack.ss_size = current->sas_ss_size; err |= __copy_to_user(&frame->uc.uc_stack, &stack, sizeof(stack)); diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index 79acdd17f1aa..fb26b3bf96b1 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c @@ -178,7 +178,7 @@ asmlinkage int sys_ipc(uint call, int first, int second, int third, union semun fourth; if (!ptr) return -EINVAL; - if (get_user(fourth.__pad, (void __user **) ptr)) + if (get_user(fourth.__pad, (void __user * __user *) ptr)) return -EFAULT; return sys_semctl (first, second, third, fourth); } diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 5b21d2023501..e5c7f285bfaf 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -263,7 +263,7 @@ asmlinkage void do_undefinstr(struct pt_regs *regs) unsigned int instr; struct undef_hook *hook; siginfo_t info; - void *pc; + void __user *pc; /* * According to the ARM ARM, PC is 2 or 4 bytes ahead, @@ -272,11 +272,11 @@ asmlinkage void do_undefinstr(struct pt_regs *regs) */ regs->ARM_pc -= correction; - pc = (void *)instruction_pointer(regs); + pc = (void __user *)instruction_pointer(regs); if (thumb_mode(regs)) { - get_user(instr, (u16 *)pc); + get_user(instr, (u16 __user *)pc); } else { - get_user(instr, (u32 *)pc); + get_user(instr, (u32 __user *)pc); } spin_lock_irq(&undef_lock); @@ -368,7 +368,7 @@ static int bad_syscall(int n, struct pt_regs *regs) info.si_signo = SIGILL; info.si_errno = 0; info.si_code = ILL_ILLTRP; - info.si_addr = (void *)instruction_pointer(regs) - + info.si_addr = (void __user *)instruction_pointer(regs) - (thumb_mode(regs) ? 2 : 4); force_sig_info(SIGILL, &info, current); @@ -481,7 +481,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) info.si_signo = SIGILL; info.si_errno = 0; info.si_code = ILL_ILLTRP; - info.si_addr = (void *)instruction_pointer(regs) - + info.si_addr = (void __user *)instruction_pointer(regs) - (thumb_mode(regs) ? 2 : 4); force_sig_info(SIGILL, &info, current); @@ -519,7 +519,7 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs) info.si_signo = SIGILL; info.si_errno = 0; info.si_code = ILL_ILLOPC; - info.si_addr = (void *)addr; + info.si_addr = (void __user *)addr; force_sig_info(SIGILL, &info, current); die_if_kernel("unknown data abort code", regs, instr); diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index c00061769123..a38a1ffecbee 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -129,7 +129,7 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr, si.si_signo = SIGSEGV; si.si_errno = 0; si.si_code = code; - si.si_addr = (void *)addr; + si.si_addr = (void __user *)addr; force_sig_info(SIGSEGV, &si, tsk); } diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index c183e6537114..db6ebc236727 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -502,7 +502,7 @@ void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc) */ arch_adjust_zones(node, zone_size, zhole_size); - free_area_init_node(node, pgdat, 0, zone_size, + free_area_init_node(node, pgdat, NULL, zone_size, bdata->node_boot_start >> PAGE_SHIFT, zhole_size); } diff --git a/include/asm-arm/ipc.h b/include/asm-arm/ipc.h index c330504ba3f4..affae4b95f97 100644 --- a/include/asm-arm/ipc.h +++ b/include/asm-arm/ipc.h @@ -7,7 +7,7 @@ * See arch/arm/kernel/sys-arm.c for ugly details.. */ struct ipc_kludge { - struct msgbuf *msgp; + struct msgbuf __user *msgp; long msgtyp; }; diff --git a/include/asm-arm/signal.h b/include/asm-arm/signal.h index 6d623e24c0fb..b033e5fd60fa 100644 --- a/include/asm-arm/signal.h +++ b/include/asm-arm/signal.h @@ -133,7 +133,11 @@ typedef unsigned long sigset_t; #define SIG_SETMASK 2 /* for setting the signal mask */ /* Type of a signal handler. */ -typedef void (*__sighandler_t)(int); +typedef void __signalfn_t(int); +typedef __signalfn_t __user *__sighandler_t; + +typedef void __restorefn_t(void); +typedef __restorefn_t __user *__sigrestore_t; #define SIG_DFL ((__sighandler_t)0) /* default signal handling */ #define SIG_IGN ((__sighandler_t)1) /* ignore signal */ @@ -144,13 +148,13 @@ struct old_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; unsigned long sa_flags; - void (*sa_restorer)(void); + __sigrestore_t sa_restorer; }; struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; - void (*sa_restorer)(void); + __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; @@ -177,7 +181,7 @@ struct sigaction { #endif /* __KERNEL__ */ typedef struct sigaltstack { - void *ss_sp; + void __user *ss_sp; int ss_flags; size_t ss_size; } stack_t; diff --git a/include/asm-arm/uaccess.h b/include/asm-arm/uaccess.h index d01310569c47..51bc2a968dbf 100644 --- a/include/asm-arm/uaccess.h +++ b/include/asm-arm/uaccess.h @@ -68,6 +68,7 @@ static inline void set_fs (mm_segment_t fs) /* We use 33-bit arithmetic here... */ #define __range_ok(addr,size) ({ \ unsigned long flag, sum; \ + __chk_user_ptr(addr); \ __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \ : "=&r" (flag), "=&r" (sum) \ : "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \ @@ -117,7 +118,7 @@ extern int __get_user_bad(void); #define get_user(x,p) \ ({ \ - const register typeof(*(p)) *__p asm("r0") = (p); \ + const register typeof(*(p)) __user *__p asm("r0") = (p);\ register typeof(*(p)) __r1 asm("r1"); \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ @@ -156,6 +157,7 @@ extern int __get_user_bad(void); do { \ unsigned long __gu_addr = (unsigned long)(ptr); \ unsigned long __gu_val; \ + __chk_user_ptr(ptr); \ switch (sizeof(*(ptr))) { \ case 1: __get_user_asm_byte(__gu_val,__gu_addr,err); break; \ case 2: __get_user_asm_half(__gu_val,__gu_addr,err); break; \ @@ -236,7 +238,7 @@ extern int __put_user_bad(void); #define put_user(x,p) \ ({ \ const register typeof(*(p)) __r1 asm("r1") = (x); \ - const register typeof(*(p)) *__p asm("r0") = (p); \ + const register typeof(*(p)) __user *__p asm("r0") = (p);\ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ @@ -273,6 +275,7 @@ extern int __put_user_bad(void); do { \ unsigned long __pu_addr = (unsigned long)(ptr); \ __typeof__(*(ptr)) __pu_val = (x); \ + __chk_user_ptr(ptr); \ switch (sizeof(*(ptr))) { \ case 1: __put_user_asm_byte(__pu_val,__pu_addr,err); break; \ case 2: __put_user_asm_half(__pu_val,__pu_addr,err); break; \ |
