Commit fb610f2a authored by Will Deacon's avatar Will Deacon

arm64: debug: Remove redundant user_mode(regs) checks from debug handlers

Now that the debug hook dispatching code takes the triggering exception
level into account, there's no need for the hooks themselves to poke
around with user_mode(regs).
Reviewed-by: default avatarMark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent a22d570a
...@@ -244,9 +244,6 @@ int kgdb_arch_handle_exception(int exception_vector, int signo, ...@@ -244,9 +244,6 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,
static int kgdb_brk_fn(struct pt_regs *regs, unsigned int esr) static int kgdb_brk_fn(struct pt_regs *regs, unsigned int esr)
{ {
if (user_mode(regs))
return DBG_HOOK_ERROR;
kgdb_handle_exception(1, SIGTRAP, 0, regs); kgdb_handle_exception(1, SIGTRAP, 0, regs);
return DBG_HOOK_HANDLED; return DBG_HOOK_HANDLED;
} }
...@@ -254,9 +251,6 @@ NOKPROBE_SYMBOL(kgdb_brk_fn) ...@@ -254,9 +251,6 @@ NOKPROBE_SYMBOL(kgdb_brk_fn)
static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int esr) static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int esr)
{ {
if (user_mode(regs))
return DBG_HOOK_ERROR;
compiled_break = 1; compiled_break = 1;
kgdb_handle_exception(1, SIGTRAP, 0, regs); kgdb_handle_exception(1, SIGTRAP, 0, regs);
...@@ -266,7 +260,7 @@ NOKPROBE_SYMBOL(kgdb_compiled_brk_fn); ...@@ -266,7 +260,7 @@ NOKPROBE_SYMBOL(kgdb_compiled_brk_fn);
static int kgdb_step_brk_fn(struct pt_regs *regs, unsigned int esr) static int kgdb_step_brk_fn(struct pt_regs *regs, unsigned int esr)
{ {
if (user_mode(regs) || !kgdb_single_step) if (!kgdb_single_step)
return DBG_HOOK_ERROR; return DBG_HOOK_ERROR;
kgdb_handle_exception(1, SIGTRAP, 0, regs); kgdb_handle_exception(1, SIGTRAP, 0, regs);
......
...@@ -445,9 +445,6 @@ kprobe_single_step_handler(struct pt_regs *regs, unsigned int esr) ...@@ -445,9 +445,6 @@ kprobe_single_step_handler(struct pt_regs *regs, unsigned int esr)
struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
int retval; int retval;
if (user_mode(regs))
return DBG_HOOK_ERROR;
/* return error if this is not our step */ /* return error if this is not our step */
retval = kprobe_ss_hit(kcb, instruction_pointer(regs)); retval = kprobe_ss_hit(kcb, instruction_pointer(regs));
...@@ -468,9 +465,6 @@ static struct step_hook kprobes_step_hook = { ...@@ -468,9 +465,6 @@ static struct step_hook kprobes_step_hook = {
static int __kprobes static int __kprobes
kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr) kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr)
{ {
if (user_mode(regs))
return DBG_HOOK_ERROR;
kprobe_handler(regs); kprobe_handler(regs);
return DBG_HOOK_HANDLED; return DBG_HOOK_HANDLED;
} }
......
...@@ -171,7 +171,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, ...@@ -171,7 +171,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self,
static int uprobe_breakpoint_handler(struct pt_regs *regs, static int uprobe_breakpoint_handler(struct pt_regs *regs,
unsigned int esr) unsigned int esr)
{ {
if (user_mode(regs) && uprobe_pre_sstep_notifier(regs)) if (uprobe_pre_sstep_notifier(regs))
return DBG_HOOK_HANDLED; return DBG_HOOK_HANDLED;
return DBG_HOOK_ERROR; return DBG_HOOK_ERROR;
...@@ -182,13 +182,9 @@ static int uprobe_single_step_handler(struct pt_regs *regs, ...@@ -182,13 +182,9 @@ static int uprobe_single_step_handler(struct pt_regs *regs,
{ {
struct uprobe_task *utask = current->utask; struct uprobe_task *utask = current->utask;
if (user_mode(regs)) { WARN_ON(utask && (instruction_pointer(regs) != utask->xol_vaddr + 4));
WARN_ON(utask &&
(instruction_pointer(regs) != utask->xol_vaddr + 4));
if (uprobe_post_sstep_notifier(regs)) if (uprobe_post_sstep_notifier(regs))
return DBG_HOOK_HANDLED; return DBG_HOOK_HANDLED;
}
return DBG_HOOK_ERROR; return DBG_HOOK_ERROR;
} }
......
...@@ -947,9 +947,6 @@ int is_valid_bugaddr(unsigned long addr) ...@@ -947,9 +947,6 @@ int is_valid_bugaddr(unsigned long addr)
static int bug_handler(struct pt_regs *regs, unsigned int esr) static int bug_handler(struct pt_regs *regs, unsigned int esr)
{ {
if (user_mode(regs))
return DBG_HOOK_ERROR;
switch (report_bug(regs->pc, regs)) { switch (report_bug(regs->pc, regs)) {
case BUG_TRAP_TYPE_BUG: case BUG_TRAP_TYPE_BUG:
die("Oops - BUG", regs, 0); die("Oops - BUG", regs, 0);
...@@ -988,9 +985,6 @@ static int kasan_handler(struct pt_regs *regs, unsigned int esr) ...@@ -988,9 +985,6 @@ static int kasan_handler(struct pt_regs *regs, unsigned int esr)
u64 addr = regs->regs[0]; u64 addr = regs->regs[0];
u64 pc = regs->pc; u64 pc = regs->pc;
if (user_mode(regs))
return DBG_HOOK_ERROR;
kasan_report(addr, size, write, pc); kasan_report(addr, size, write, pc);
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment