]> git.hungrycats.org Git - linux/commitdiff
Do not expand stack for non-faulting loads
authorDavid S. Miller <davem@nuts.ninka.net>
Mon, 11 Mar 2002 00:58:39 +0000 (16:58 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Mon, 11 Mar 2002 00:58:39 +0000 (16:58 -0800)
arch/sparc64/mm/fault.c

index 504c4f9788511fdd7c780d2e0b5998f36125756b..43d81e8ecdfffe60d21bf354fc0486943ec1ed8c 100644 (file)
@@ -343,6 +343,20 @@ continue_fault:
                goto good_area;
        if (!(vma->vm_flags & VM_GROWSDOWN))
                goto bad_area;
+       if (!(fault_code & FAULT_CODE_WRITE)) {
+               /* Non-faulting loads shouldn't expand stack. */
+               insn = get_fault_insn(regs, insn);
+               if ((insn & 0xc0800000) == 0xc0800000) {
+                       unsigned char asi;
+
+                       if (insn & 0x2000)
+                               asi = (regs->tstate >> 24);
+                       else
+                               asi = (insn >> 5);
+                       if ((asi & 0xf2) == 0x82)
+                               goto bad_area;
+               }
+       }
        if (expand_stack(vma, address))
                goto bad_area;
        /*