X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Farm%2Fkernel%2Ftraps.c;h=e5c7f285bfaf1f8594e3b67bc62bd8a812c11c83;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=3f28167930be4627bc6f75a0094a52e29e824f80;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 3f2816793..e5c7f285b 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); @@ -426,7 +426,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) /* * Flush a region from virtual address 'r0' to virtual address 'r1' - * _inclusive_. There is no alignment requirement on either address; + * _exclusive_. There is no alignment requirement on either address; * user space does not need to know the hardware cache layout. * * r2 contains flags. It should ALWAYS be passed as ZERO until it @@ -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);