Skip to content

Commit

Permalink
x86: don't send SIGBUS for kernel page faults
Browse files Browse the repository at this point in the history
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: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Linus Torvalds committed Aug 13, 2010
1 parent 5528f91 commit 9605456
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion arch/x86/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -802,8 +802,10 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
up_read(&mm->mmap_sem);

/* Kernel mode? Handle exceptions or die: */
if (!(error_code & PF_USER))
if (!(error_code & PF_USER)) {
no_context(regs, error_code, address);
return;
}

/* User-space => ok to do another page fault: */
if (is_prefetch(regs, error_code, address))
Expand Down

0 comments on commit 9605456

Please sign in to comment.