diff options
Diffstat (limited to 'arch/mips/math-emu')
-rw-r--r-- | arch/mips/math-emu/dsemul.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c index ea6ba7248489..653e325849e4 100644 --- a/arch/mips/math-emu/dsemul.c +++ b/arch/mips/math-emu/dsemul.c | |||
@@ -54,8 +54,7 @@ struct emuframe { | |||
54 | int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | 54 | int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) |
55 | { | 55 | { |
56 | extern asmlinkage void handle_dsemulret(void); | 56 | extern asmlinkage void handle_dsemulret(void); |
57 | mips_instruction *dsemul_insns; | 57 | struct emuframe __user *fr; |
58 | struct emuframe *fr; | ||
59 | int err; | 58 | int err; |
60 | 59 | ||
61 | if (ir == 0) { /* a nop is easy */ | 60 | if (ir == 0) { /* a nop is easy */ |
@@ -87,8 +86,8 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | |||
87 | */ | 86 | */ |
88 | 87 | ||
89 | /* Ensure that the two instructions are in the same cache line */ | 88 | /* Ensure that the two instructions are in the same cache line */ |
90 | dsemul_insns = (mips_instruction *) ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); | 89 | fr = (struct emuframe __user *) |
91 | fr = (struct emuframe *) dsemul_insns; | 90 | ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); |
92 | 91 | ||
93 | /* Verify that the stack pointer is not competely insane */ | 92 | /* Verify that the stack pointer is not competely insane */ |
94 | if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) | 93 | if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) |
@@ -113,12 +112,13 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | |||
113 | 112 | ||
114 | int do_dsemulret(struct pt_regs *xcp) | 113 | int do_dsemulret(struct pt_regs *xcp) |
115 | { | 114 | { |
116 | struct emuframe *fr; | 115 | struct emuframe __user *fr; |
117 | unsigned long epc; | 116 | unsigned long epc; |
118 | u32 insn, cookie; | 117 | u32 insn, cookie; |
119 | int err = 0; | 118 | int err = 0; |
120 | 119 | ||
121 | fr = (struct emuframe *) (xcp->cp0_epc - sizeof(mips_instruction)); | 120 | fr = (struct emuframe __user *) |
121 | (xcp->cp0_epc - sizeof(mips_instruction)); | ||
122 | 122 | ||
123 | /* | 123 | /* |
124 | * If we can't even access the area, something is very wrong, but we'll | 124 | * If we can't even access the area, something is very wrong, but we'll |