|
@@ -601,11 +601,15 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr
|
|
pc = (u32)pc;
|
|
pc = (u32)pc;
|
|
if (get_user(insn, (u32 __user *) pc) != -EFAULT) {
|
|
if (get_user(insn, (u32 __user *) pc) != -EFAULT) {
|
|
int asi = decode_asi(insn, regs);
|
|
int asi = decode_asi(insn, regs);
|
|
|
|
+ int err;
|
|
|
|
+
|
|
if ((asi > ASI_SNFL) ||
|
|
if ((asi > ASI_SNFL) ||
|
|
(asi < ASI_P))
|
|
(asi < ASI_P))
|
|
goto daex;
|
|
goto daex;
|
|
- if (get_user(first, (u32 __user *)sfar) ||
|
|
|
|
- get_user(second, (u32 __user *)(sfar + 4))) {
|
|
|
|
|
|
+ err = get_user(first, (u32 __user *)sfar);
|
|
|
|
+ if (!err)
|
|
|
|
+ err = get_user(second, (u32 __user *)(sfar + 4));
|
|
|
|
+ if (err) {
|
|
if (asi & 0x2) /* NF */ {
|
|
if (asi & 0x2) /* NF */ {
|
|
first = 0; second = 0;
|
|
first = 0; second = 0;
|
|
} else
|
|
} else
|