diff options
author | Oleg Nesterov <oleg@redhat.com> | 2013-01-31 13:55:27 -0500 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2013-02-08 12:24:34 -0500 |
commit | 1b47aefd9b6bd439a4be43c47acd22987ac22db8 (patch) | |
tree | a3d0a40ce94f7e57d4375a77a0c74c0001b4bb67 /kernel/trace/trace_uprobe.c | |
parent | a932b7381f81235530c3d0acbd3ba2c7537d78e5 (diff) |
uprobes/perf: Always increment trace_uprobe->nhit
Move tu->nhit++ from uprobe_trace_func() to uprobe_dispatcher().
->nhit counts how many time we hit the breakpoint inserted by this
uprobe, we do not want to loose this info if uprobe was enabled by
sys_perf_event_open().
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/trace/trace_uprobe.c')
-rw-r--r-- | kernel/trace/trace_uprobe.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index 9c8babbfd11b..c4e29e19fdd7 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c | |||
@@ -476,8 +476,6 @@ static void uprobe_trace_func(struct trace_uprobe *tu, struct pt_regs *regs) | |||
476 | unsigned long irq_flags; | 476 | unsigned long irq_flags; |
477 | struct ftrace_event_call *call = &tu->call; | 477 | struct ftrace_event_call *call = &tu->call; |
478 | 478 | ||
479 | tu->nhit++; | ||
480 | |||
481 | local_save_flags(irq_flags); | 479 | local_save_flags(irq_flags); |
482 | pc = preempt_count(); | 480 | pc = preempt_count(); |
483 | 481 | ||
@@ -701,6 +699,7 @@ static int uprobe_dispatcher(struct uprobe_consumer *con, struct pt_regs *regs) | |||
701 | struct trace_uprobe *tu; | 699 | struct trace_uprobe *tu; |
702 | 700 | ||
703 | tu = container_of(con, struct trace_uprobe, consumer); | 701 | tu = container_of(con, struct trace_uprobe, consumer); |
702 | tu->nhit++; | ||
704 | 703 | ||
705 | if (tu->flags & TP_FLAG_TRACE) | 704 | if (tu->flags & TP_FLAG_TRACE) |
706 | uprobe_trace_func(tu, regs); | 705 | uprobe_trace_func(tu, regs); |