uprobes/tracing: Make uprobe_perf_close() visible to uprobe_perf_open()
Preparation. Move uprobe_perf_close() up before uprobe_perf_open() to avoid the forward declaration in the next patch and make it readable. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
This commit is contained in:
parent
c90a695012
commit
ce5f36a58f
@ -1009,6 +1009,28 @@ uprobe_filter_event(struct trace_uprobe *tu, struct perf_event *event)
|
|||||||
return __uprobe_perf_filter(&tu->filter, event->hw.tp_target->mm);
|
return __uprobe_perf_filter(&tu->filter, event->hw.tp_target->mm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int uprobe_perf_close(struct trace_uprobe *tu, struct perf_event *event)
|
||||||
|
{
|
||||||
|
bool done;
|
||||||
|
|
||||||
|
write_lock(&tu->filter.rwlock);
|
||||||
|
if (event->hw.tp_target) {
|
||||||
|
list_del(&event->hw.tp_list);
|
||||||
|
done = tu->filter.nr_systemwide ||
|
||||||
|
(event->hw.tp_target->flags & PF_EXITING) ||
|
||||||
|
uprobe_filter_event(tu, event);
|
||||||
|
} else {
|
||||||
|
tu->filter.nr_systemwide--;
|
||||||
|
done = tu->filter.nr_systemwide;
|
||||||
|
}
|
||||||
|
write_unlock(&tu->filter.rwlock);
|
||||||
|
|
||||||
|
if (!done)
|
||||||
|
uprobe_apply(tu->inode, tu->offset, &tu->consumer, false);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int uprobe_perf_open(struct trace_uprobe *tu, struct perf_event *event)
|
static int uprobe_perf_open(struct trace_uprobe *tu, struct perf_event *event)
|
||||||
{
|
{
|
||||||
bool done;
|
bool done;
|
||||||
@ -1039,28 +1061,6 @@ static int uprobe_perf_open(struct trace_uprobe *tu, struct perf_event *event)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int uprobe_perf_close(struct trace_uprobe *tu, struct perf_event *event)
|
|
||||||
{
|
|
||||||
bool done;
|
|
||||||
|
|
||||||
write_lock(&tu->filter.rwlock);
|
|
||||||
if (event->hw.tp_target) {
|
|
||||||
list_del(&event->hw.tp_list);
|
|
||||||
done = tu->filter.nr_systemwide ||
|
|
||||||
(event->hw.tp_target->flags & PF_EXITING) ||
|
|
||||||
uprobe_filter_event(tu, event);
|
|
||||||
} else {
|
|
||||||
tu->filter.nr_systemwide--;
|
|
||||||
done = tu->filter.nr_systemwide;
|
|
||||||
}
|
|
||||||
write_unlock(&tu->filter.rwlock);
|
|
||||||
|
|
||||||
if (!done)
|
|
||||||
uprobe_apply(tu->inode, tu->offset, &tu->consumer, false);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool uprobe_perf_filter(struct uprobe_consumer *uc,
|
static bool uprobe_perf_filter(struct uprobe_consumer *uc,
|
||||||
enum uprobe_filter_ctx ctx, struct mm_struct *mm)
|
enum uprobe_filter_ctx ctx, struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user