1. 13 Aug, 2010 3 commits
    • Linus Torvalds's avatar
      x86: don't send SIGBUS for kernel page faults · 96054569
      Linus Torvalds authored
      It's wrong for several reasons, but the most direct one is that the
      fault may be for the stack accesses to set up a previous SIGBUS.  When
      we have a kernel exception, the kernel exception handler does all the
      fixups, not some user-level signal handler.
      
      Even apart from the nested SIGBUS issue, it's also wrong to give out
      kernel fault addresses in the signal handler info block, or to send a
      SIGBUS when a system call already returns EFAULT.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      96054569
    • Linus Torvalds's avatar
      mm: fix missing page table unmap for stack guard page failure case · 5528f913
      Linus Torvalds authored
      .. which didn't show up in my tests because it's a no-op on x86-64 and
      most other architectures.  But we enter the function with the last-level
      page table mapped, and should unmap it at exit.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5528f913
    • Linus Torvalds's avatar
      mm: keep a guard page below a grow-down stack segment · 320b2b8d
      Linus Torvalds authored
      This is a rather minimally invasive patch to solve the problem of the
      user stack growing into a memory mapped area below it.  Whenever we fill
      the first page of the stack segment, expand the segment down by one
      page.
      
      Now, admittedly some odd application might _want_ the stack to grow down
      into the preceding memory mapping, and so we may at some point need to
      make this a process tunable (some people might also want to have more
      than a single page of guarding), but let's try the minimal approach
      first.
      
      Tested with trivial application that maps a single page just below the
      stack, and then starts recursing.  Without this, we will get a SIGSEGV
      _after_ the stack has smashed the mapping.  With this patch, we'll get a
      nice SIGBUS just as the stack touches the page just above the mapping.
      Requested-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      320b2b8d
  2. 12 Aug, 2010 37 commits