Commit 350cd19e authored by Marcin Nowakowski's avatar Marcin Nowakowski Committed by Greg Kroah-Hartman

MIPS: uprobes: fix use of uninitialised variable

commit ca86c9ef upstream.

arch_uprobe_pre_xol needs to emulate a branch if a branch instruction
has been replaced with a breakpoint, but in fact an uninitialised local
variable was passed to the emulator routine instead of the original
instruction
Signed-off-by: default avatarMarcin Nowakowski <marcin.nowakowski@imgtec.com>
Fixes: 40e084a5 ('MIPS: Add uprobes support.')
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14300/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e267de2c
...@@ -157,7 +157,6 @@ bool is_trap_insn(uprobe_opcode_t *insn) ...@@ -157,7 +157,6 @@ bool is_trap_insn(uprobe_opcode_t *insn)
int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs) int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs)
{ {
struct uprobe_task *utask = current->utask; struct uprobe_task *utask = current->utask;
union mips_instruction insn;
/* /*
* Now find the EPC where to resume after the breakpoint has been * Now find the EPC where to resume after the breakpoint has been
...@@ -168,10 +167,10 @@ int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs) ...@@ -168,10 +167,10 @@ int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs)
unsigned long epc; unsigned long epc;
epc = regs->cp0_epc; epc = regs->cp0_epc;
__compute_return_epc_for_insn(regs, insn); __compute_return_epc_for_insn(regs,
(union mips_instruction) aup->insn[0]);
aup->resume_epc = regs->cp0_epc; aup->resume_epc = regs->cp0_epc;
} }
utask->autask.saved_trap_nr = current->thread.trap_nr; utask->autask.saved_trap_nr = current->thread.trap_nr;
current->thread.trap_nr = UPROBE_TRAP_NR; current->thread.trap_nr = UPROBE_TRAP_NR;
regs->cp0_epc = current->utask->xol_vaddr; regs->cp0_epc = current->utask->xol_vaddr;
......
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