Skip to content

Commit

Permalink
arm64: Make the user fault reporting more specific
Browse files Browse the repository at this point in the history
For user space faults the kernel reports "unhandled page fault" and it
gives the ESR value. With this patch the error message looked up in the
fault info array to give a better description.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
  • Loading branch information
Catalin Marinas committed Nov 14, 2012
1 parent 77b6706 commit 3495386
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions arch/arm64/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
#include <asm/pgtable.h>
#include <asm/tlbflush.h>

static const char *fault_name(unsigned int esr);

/*
* Dump out the page tables associated with 'addr' in mm 'mm'.
*/
Expand Down Expand Up @@ -112,8 +114,9 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr,
struct siginfo si;

if (show_unhandled_signals) {
pr_info("%s[%d]: unhandled page fault (%d) at 0x%08lx, code 0x%03x\n",
tsk->comm, task_pid_nr(tsk), sig, addr, esr);
pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,
addr, esr);
show_pte(tsk->mm, addr);
show_regs(regs);
}
Expand Down Expand Up @@ -450,6 +453,12 @@ static struct fault_info {
{ do_bad, SIGBUS, 0, "unknown 63" },
};

static const char *fault_name(unsigned int esr)
{
const struct fault_info *inf = fault_info + (esr & 63);
return inf->name;
}

/*
* Dispatch a data abort to the relevant handler.
*/
Expand Down

0 comments on commit 3495386

Please sign in to comment.