Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca86c9ef authored by Marcin Nowakowski's avatar Marcin Nowakowski Committed by Ralf Baechle
Browse files

MIPS: uprobes: fix use of uninitialised variable



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>
parent ddabfa5c
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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)
{
	struct uprobe_task *utask = current->utask;
	union mips_instruction insn;

	/*
	 * 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)
		unsigned long 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;
	}

	utask->autask.saved_trap_nr = current->thread.trap_nr;
	current->thread.trap_nr = UPROBE_TRAP_NR;
	regs->cp0_epc = current->utask->xol_vaddr;