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 | |
| 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')
| -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); |
