diff --git a/arch/mips/kernel/access-helper.h b/arch/mips/kernel/access-helper.h
index dd5b502813b88d05249208915602a0facfdb193c..5903880315035a14009d42901f9d3bf57d195255 100644
--- a/arch/mips/kernel/access-helper.h
+++ b/arch/mips/kernel/access-helper.h
@@ -4,15 +4,16 @@
 
 static inline int __get_addr(unsigned long *a, unsigned long *p, bool user)
 {
-	return user ? get_user(*a, p) : get_kernel_nofault(*a, p);
+	return user ? get_user(*a, (unsigned long __user *)p) :
+		      get_kernel_nofault(*a, p);
 }
 
 static inline int __get_inst16(u16 *i, u16 *p, bool user)
 {
-	return user ? get_user(*i, p) : get_kernel_nofault(*i, p);
+	return user ? get_user(*i, (u16 __user *)p) : get_kernel_nofault(*i, p);
 }
 
 static inline int __get_inst32(u32 *i, u32 *p, bool user)
 {
-	return user ? get_user(*i, p) : get_kernel_nofault(*i, p);
+	return user ? get_user(*i, (u32 __user *)p) : get_kernel_nofault(*i, p);
 }
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
index 1f3b20a8c37780d2ad9917f55046ddc031b2e71b..df4b708c04a9a25f50239f5e76e3b4813f2e75d1 100644
--- a/arch/mips/kernel/unaligned.c
+++ b/arch/mips/kernel/unaligned.c
@@ -109,7 +109,7 @@ static u32 unaligned_action;
 extern void show_registers(struct pt_regs *regs);
 
 static void emulate_load_store_insn(struct pt_regs *regs,
-	void __user *addr, unsigned int __user *pc)
+	void __user *addr, unsigned int *pc)
 {
 	unsigned long origpc, orig31, value;
 	union mips_instruction insn;
@@ -1475,7 +1475,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
 asmlinkage void do_ade(struct pt_regs *regs)
 {
 	enum ctx_state prev_state;
-	unsigned int __user *pc;
+	unsigned int *pc;
 
 	prev_state = exception_enter();
 	perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS,
@@ -1526,7 +1526,7 @@ asmlinkage void do_ade(struct pt_regs *regs)
 
 	if (unaligned_action == UNALIGNED_ACTION_SHOW)
 		show_registers(regs);
-	pc = (unsigned int __user *)exception_epc(regs);
+	pc = (unsigned int *)exception_epc(regs);
 
 	emulate_load_store_insn(regs, (void __user *)regs->cp0_badvaddr, pc);