提交 ff471b24 编写于 作者: A Al Viro 提交者: Linus Torvalds

frv si_addr annotations

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Acked-by: NDavid Howells <dhowells@redhat.com>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 e945e849
...@@ -49,7 +49,7 @@ asmlinkage void insn_access_error(unsigned long esfr1, unsigned long epcr0, unsi ...@@ -49,7 +49,7 @@ asmlinkage void insn_access_error(unsigned long esfr1, unsigned long epcr0, unsi
info.si_signo = SIGSEGV; info.si_signo = SIGSEGV;
info.si_code = SEGV_ACCERR; info.si_code = SEGV_ACCERR;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc); info.si_addr = (void __user *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
} /* end insn_access_error() */ } /* end insn_access_error() */
...@@ -73,7 +73,7 @@ asmlinkage void illegal_instruction(unsigned long esfr1, unsigned long epcr0, un ...@@ -73,7 +73,7 @@ asmlinkage void illegal_instruction(unsigned long esfr1, unsigned long epcr0, un
epcr0, esr0, esfr1); epcr0, esr0, esfr1);
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc); info.si_addr = (void __user *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
switch (__frame->tbr & TBR_TT) { switch (__frame->tbr & TBR_TT) {
case TBR_TT_ILLEGAL_INSTR: case TBR_TT_ILLEGAL_INSTR:
...@@ -111,7 +111,8 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -111,7 +111,8 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
unsigned long esr0) unsigned long esr0)
{ {
static DEFINE_SPINLOCK(atomic_op_lock); static DEFINE_SPINLOCK(atomic_op_lock);
unsigned long x, y, z, *p; unsigned long x, y, z;
unsigned long __user *p;
mm_segment_t oldfs; mm_segment_t oldfs;
siginfo_t info; siginfo_t info;
int ret; int ret;
...@@ -128,7 +129,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -128,7 +129,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* u32 __atomic_user_cmpxchg32(u32 *ptr, u32 test, u32 new) * u32 __atomic_user_cmpxchg32(u32 *ptr, u32 test, u32 new)
*/ */
case TBR_TT_ATOMIC_CMPXCHG32: case TBR_TT_ATOMIC_CMPXCHG32:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
y = __frame->gr10; y = __frame->gr10;
...@@ -158,7 +159,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -158,7 +159,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* u32 __atomic_kernel_xchg32(void *v, u32 new) * u32 __atomic_kernel_xchg32(void *v, u32 new)
*/ */
case TBR_TT_ATOMIC_XCHG32: case TBR_TT_ATOMIC_XCHG32:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
y = __frame->gr9; y = __frame->gr9;
for (;;) { for (;;) {
...@@ -181,7 +182,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -181,7 +182,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* ulong __atomic_kernel_XOR_return(ulong i, ulong *v) * ulong __atomic_kernel_XOR_return(ulong i, ulong *v)
*/ */
case TBR_TT_ATOMIC_XOR: case TBR_TT_ATOMIC_XOR:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
for (;;) { for (;;) {
...@@ -205,7 +206,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -205,7 +206,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* ulong __atomic_kernel_OR_return(ulong i, ulong *v) * ulong __atomic_kernel_OR_return(ulong i, ulong *v)
*/ */
case TBR_TT_ATOMIC_OR: case TBR_TT_ATOMIC_OR:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
for (;;) { for (;;) {
...@@ -229,7 +230,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -229,7 +230,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* ulong __atomic_kernel_AND_return(ulong i, ulong *v) * ulong __atomic_kernel_AND_return(ulong i, ulong *v)
*/ */
case TBR_TT_ATOMIC_AND: case TBR_TT_ATOMIC_AND:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
for (;;) { for (;;) {
...@@ -253,7 +254,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -253,7 +254,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* int __atomic_user_sub_return(atomic_t *v, int i) * int __atomic_user_sub_return(atomic_t *v, int i)
*/ */
case TBR_TT_ATOMIC_SUB: case TBR_TT_ATOMIC_SUB:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
for (;;) { for (;;) {
...@@ -277,7 +278,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -277,7 +278,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
* int __atomic_user_add_return(atomic_t *v, int i) * int __atomic_user_add_return(atomic_t *v, int i)
*/ */
case TBR_TT_ATOMIC_ADD: case TBR_TT_ATOMIC_ADD:
p = (unsigned long *) __frame->gr8; p = (unsigned long __user *) __frame->gr8;
x = __frame->gr9; x = __frame->gr9;
for (;;) { for (;;) {
...@@ -322,7 +323,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, ...@@ -322,7 +323,7 @@ asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0,
info.si_signo = SIGSEGV; info.si_signo = SIGSEGV;
info.si_code = SEGV_ACCERR; info.si_code = SEGV_ACCERR;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) __frame->pc; info.si_addr = (void __user *) __frame->pc;
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
} }
...@@ -343,7 +344,7 @@ asmlinkage void media_exception(unsigned long msr0, unsigned long msr1) ...@@ -343,7 +344,7 @@ asmlinkage void media_exception(unsigned long msr0, unsigned long msr1)
info.si_signo = SIGFPE; info.si_signo = SIGFPE;
info.si_code = FPE_MDAOVF; info.si_code = FPE_MDAOVF;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) __frame->pc; info.si_addr = (void __user *) __frame->pc;
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
} /* end media_exception() */ } /* end media_exception() */
...@@ -383,7 +384,7 @@ asmlinkage void memory_access_exception(unsigned long esr0, ...@@ -383,7 +384,7 @@ asmlinkage void memory_access_exception(unsigned long esr0,
info.si_addr = NULL; info.si_addr = NULL;
if ((esr0 & (ESRx_VALID | ESR0_EAV)) == (ESRx_VALID | ESR0_EAV)) if ((esr0 & (ESRx_VALID | ESR0_EAV)) == (ESRx_VALID | ESR0_EAV))
info.si_addr = (void *) ear0; info.si_addr = (void __user *) ear0;
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
...@@ -412,7 +413,7 @@ asmlinkage void data_access_error(unsigned long esfr1, unsigned long esr15, unsi ...@@ -412,7 +413,7 @@ asmlinkage void data_access_error(unsigned long esfr1, unsigned long esr15, unsi
info.si_signo = SIGSEGV; info.si_signo = SIGSEGV;
info.si_code = SEGV_ACCERR; info.si_code = SEGV_ACCERR;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) info.si_addr = (void __user *)
(((esr15 & (ESRx_VALID|ESR15_EAV)) == (ESRx_VALID|ESR15_EAV)) ? ear15 : 0); (((esr15 & (ESRx_VALID|ESR15_EAV)) == (ESRx_VALID|ESR15_EAV)) ? ear15 : 0);
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
...@@ -446,7 +447,7 @@ asmlinkage void division_exception(unsigned long esfr1, unsigned long esr0, unsi ...@@ -446,7 +447,7 @@ asmlinkage void division_exception(unsigned long esfr1, unsigned long esr0, unsi
info.si_signo = SIGFPE; info.si_signo = SIGFPE;
info.si_code = FPE_INTDIV; info.si_code = FPE_INTDIV;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *) __frame->pc; info.si_addr = (void __user *) __frame->pc;
force_sig_info(info.si_signo, &info, current); force_sig_info(info.si_signo, &info, current);
} /* end division_exception() */ } /* end division_exception() */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册