Commit 79d54b24 authored by Oleg Nesterov's avatar Oleg Nesterov

uprobes: Do not leak UTASK_BP_HIT if find_active_uprobe() fails

If handle_swbp()->find_active_uprobe() fails we return with
utask->state = UTASK_BP_HIT.

Change handle_swbp() to reset utask->state at the start. Note
that we do this unconditionally, see the next patch(es).
Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Acked-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
parent 1d787d37
...@@ -1468,6 +1468,10 @@ static void handle_swbp(struct pt_regs *regs) ...@@ -1468,6 +1468,10 @@ static void handle_swbp(struct pt_regs *regs)
bp_vaddr = uprobe_get_swbp_addr(regs); bp_vaddr = uprobe_get_swbp_addr(regs);
uprobe = find_active_uprobe(bp_vaddr, &is_swbp); uprobe = find_active_uprobe(bp_vaddr, &is_swbp);
utask = current->utask;
if (utask)
utask->state = UTASK_RUNNING;
if (!uprobe) { if (!uprobe) {
if (is_swbp > 0) { if (is_swbp > 0) {
/* No matching uprobe; signal SIGTRAP. */ /* No matching uprobe; signal SIGTRAP. */
...@@ -1486,7 +1490,6 @@ static void handle_swbp(struct pt_regs *regs) ...@@ -1486,7 +1490,6 @@ static void handle_swbp(struct pt_regs *regs)
return; return;
} }
utask = current->utask;
if (!utask) { if (!utask) {
utask = add_utask(); utask = add_utask();
/* Cannot allocate; re-execute the instruction. */ /* Cannot allocate; re-execute the instruction. */
......
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