]> Pileus Git - ~andy/linux/commitdiff
uprobes: Allocate ->utask before handler_chain() for tracing handlers
authorOleg Nesterov <oleg@redhat.com>
Tue, 26 Nov 2013 00:35:25 +0000 (09:35 +0900)
committerSteven Rostedt <rostedt@goodmis.org>
Fri, 3 Jan 2014 01:57:04 +0000 (20:57 -0500)
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 simple and should work right now.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
kernel/events/uprobes.c

index 24b7d6ca871b632f2e35912e720bfc0162c939c5..3cc8e0bb8acfb582adb7975f0a371415b77fa9f6 100644 (file)
@@ -1828,6 +1828,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;