From: Oleg Nesterov <o...@redhat.com>

uprobe_trace_print() and uprobe_perf_print() need to pass the additional
info to call_fetch() methods, currently there is no simple way to do this.

current->utask looks like a natural place to hold this info, but we need
to allocate it before handler_chain().

This is a bit unfortunate, perhaps we will find a better solution later,
but this is simnple and should work right now.

Signed-off-by: Oleg Nesterov <o...@redhat.com>
Cc: Srikar Dronamraju <sri...@linux.vnet.ibm.com>
Cc: Masami Hiramatsu <masami.hiramatsu...@hitachi.com>
Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 kernel/events/uprobes.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index ad8e1bdca70e..a1aa4aed029c 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -1744,6 +1744,10 @@ static void handle_swbp(struct pt_regs *regs)
        if (unlikely(!test_bit(UPROBE_COPY_INSN, &uprobe->flags)))
                goto out;
 
+       /* Tracing handlers use ->utask to communicate with fetch methods */
+       if (!get_utask())
+               goto out;
+
        handler_chain(uprobe, regs);
        if (can_skip_sstep(uprobe, regs))
                goto out;
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to