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

Commit 734db377 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: kprobes: Fix up race against probe point removal.



Handle a corner case where another CPU or debugger removes the probe
point from underneath us.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 247bc6d2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -252,6 +252,17 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
	p = get_kprobe(addr);
	if (!p) {
		/* Not one of ours: let kernel handle it */
		if (*(kprobe_opcode_t *)addr != BREAKPOINT_INSTRUCTION) {
			/*
			 * The breakpoint instruction was removed right
			 * after we hit it. Another cpu has removed
			 * either a probepoint or a debugger breakpoint
			 * at this address. In either case, no further
			 * handling of this interrupt is appropriate.
			 */
			ret = 1;
		}

		goto no_kprobe;
	}