diff options
-rw-r--r-- | arch/mips/kernel/signal32.c | 10 | ||||
-rw-r--r-- | arch/mips/mm/c-sb1.c | 2 | ||||
-rw-r--r-- | include/asm-mips/paccess.h | 8 |
3 files changed, 11 insertions, 9 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 18c028ba9efa..663fa547ee18 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -261,11 +261,12 @@ asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act, | |||
261 | 261 | ||
262 | if (act) { | 262 | if (act) { |
263 | old_sigset_t mask; | 263 | old_sigset_t mask; |
264 | s32 handler; | ||
264 | 265 | ||
265 | if (!access_ok(VERIFY_READ, act, sizeof(*act))) | 266 | if (!access_ok(VERIFY_READ, act, sizeof(*act))) |
266 | return -EFAULT; | 267 | return -EFAULT; |
267 | err |= __get_user((u32)(u64)new_ka.sa.sa_handler, | 268 | err |= __get_user(handler, &act->sa_handler); |
268 | &act->sa_handler); | 269 | new_ka.sa.sa_handler = (void*)(s64)handler; |
269 | err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); | 270 | err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); |
270 | err |= __get_user(mask, &act->sa_mask.sig[0]); | 271 | err |= __get_user(mask, &act->sa_mask.sig[0]); |
271 | if (err) | 272 | if (err) |
@@ -826,12 +827,13 @@ asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act, | |||
826 | goto out; | 827 | goto out; |
827 | 828 | ||
828 | if (act) { | 829 | if (act) { |
830 | s32 handler; | ||
829 | int err = 0; | 831 | int err = 0; |
830 | 832 | ||
831 | if (!access_ok(VERIFY_READ, act, sizeof(*act))) | 833 | if (!access_ok(VERIFY_READ, act, sizeof(*act))) |
832 | return -EFAULT; | 834 | return -EFAULT; |
833 | err |= __get_user((u32)(u64)new_sa.sa.sa_handler, | 835 | err |= __get_user(handler, &act->sa_handler); |
834 | &act->sa_handler); | 836 | new_sa.sa.sa_handler = (void*)(s64)handler; |
835 | err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags); | 837 | err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags); |
836 | err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask); | 838 | err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask); |
837 | if (err) | 839 | if (err) |
diff --git a/arch/mips/mm/c-sb1.c b/arch/mips/mm/c-sb1.c index 502f68c664b2..e65b1bb576fd 100644 --- a/arch/mips/mm/c-sb1.c +++ b/arch/mips/mm/c-sb1.c | |||
@@ -235,7 +235,7 @@ static inline void __sb1_flush_icache_range(unsigned long start, | |||
235 | /* | 235 | /* |
236 | * Invalidate all caches on this CPU | 236 | * Invalidate all caches on this CPU |
237 | */ | 237 | */ |
238 | static void local_sb1___flush_cache_all(void) | 238 | static void __attribute_used__ local_sb1___flush_cache_all(void) |
239 | { | 239 | { |
240 | __sb1_writeback_inv_dcache_all(); | 240 | __sb1_writeback_inv_dcache_all(); |
241 | __sb1_flush_icache_all(); | 241 | __sb1_flush_icache_all(); |
diff --git a/include/asm-mips/paccess.h b/include/asm-mips/paccess.h index 309bc3099f68..46f2d23d2697 100644 --- a/include/asm-mips/paccess.h +++ b/include/asm-mips/paccess.h | |||
@@ -52,7 +52,7 @@ struct __large_pstruct { unsigned long buf[100]; }; | |||
52 | }) | 52 | }) |
53 | 53 | ||
54 | #define __get_dbe_asm(insn) \ | 54 | #define __get_dbe_asm(insn) \ |
55 | ({ \ | 55 | { \ |
56 | __asm__ __volatile__( \ | 56 | __asm__ __volatile__( \ |
57 | "1:\t" insn "\t%1,%2\n\t" \ | 57 | "1:\t" insn "\t%1,%2\n\t" \ |
58 | "move\t%0,$0\n" \ | 58 | "move\t%0,$0\n" \ |
@@ -67,7 +67,7 @@ struct __large_pstruct { unsigned long buf[100]; }; | |||
67 | ".previous" \ | 67 | ".previous" \ |
68 | :"=r" (__gu_err), "=r" (__gu_val) \ | 68 | :"=r" (__gu_err), "=r" (__gu_val) \ |
69 | :"o" (__mp(__gu_addr)), "i" (-EFAULT)); \ | 69 | :"o" (__mp(__gu_addr)), "i" (-EFAULT)); \ |
70 | }) | 70 | } |
71 | 71 | ||
72 | extern void __get_dbe_unknown(void); | 72 | extern void __get_dbe_unknown(void); |
73 | 73 | ||
@@ -90,7 +90,7 @@ extern void __get_dbe_unknown(void); | |||
90 | }) | 90 | }) |
91 | 91 | ||
92 | #define __put_dbe_asm(insn) \ | 92 | #define __put_dbe_asm(insn) \ |
93 | ({ \ | 93 | { \ |
94 | __asm__ __volatile__( \ | 94 | __asm__ __volatile__( \ |
95 | "1:\t" insn "\t%1,%2\n\t" \ | 95 | "1:\t" insn "\t%1,%2\n\t" \ |
96 | "move\t%0,$0\n" \ | 96 | "move\t%0,$0\n" \ |
@@ -104,7 +104,7 @@ extern void __get_dbe_unknown(void); | |||
104 | ".previous" \ | 104 | ".previous" \ |
105 | : "=r" (__pu_err) \ | 105 | : "=r" (__pu_err) \ |
106 | : "r" (__pu_val), "o" (__mp(__pu_addr)), "i" (-EFAULT)); \ | 106 | : "r" (__pu_val), "o" (__mp(__pu_addr)), "i" (-EFAULT)); \ |
107 | }) | 107 | } |
108 | 108 | ||
109 | extern void __put_dbe_unknown(void); | 109 | extern void __put_dbe_unknown(void); |
110 | 110 | ||