diff options
author | Mathieu Poirier <mathieu.poirier@linaro.org> | 2016-07-18 12:43:07 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-08-18 04:35:51 -0400 |
commit | 99f5bc9bfa9094e7c264a8e09f9507b391a3d1d1 (patch) | |
tree | 4ba1adeee15c9f106a567abdf6fda53f357844cf /kernel/events | |
parent | 12b40a2393719a37ff86a0b43bece6d28a75cbfc (diff) |
perf/core: Enable mapping of the stop filters
At this time the perf_addr_filter_needs_mmap() function will _not_
return true on a user space 'stop' filter. But stop filters need
exactly the same kind of mapping that range and start filters get.
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Link: http://lkml.kernel.org/r/1468860187-318-4-git-send-email-mathieu.poirier@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
-rw-r--r-- | kernel/events/core.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 9a030a96bc1f..a5fc5c8cdfb0 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
@@ -6620,15 +6620,6 @@ got_name: | |||
6620 | } | 6620 | } |
6621 | 6621 | ||
6622 | /* | 6622 | /* |
6623 | * Whether this @filter depends on a dynamic object which is not loaded | ||
6624 | * yet or its load addresses are not known. | ||
6625 | */ | ||
6626 | static bool perf_addr_filter_needs_mmap(struct perf_addr_filter *filter) | ||
6627 | { | ||
6628 | return filter->filter && filter->inode; | ||
6629 | } | ||
6630 | |||
6631 | /* | ||
6632 | * Check whether inode and address range match filter criteria. | 6623 | * Check whether inode and address range match filter criteria. |
6633 | */ | 6624 | */ |
6634 | static bool perf_addr_filter_match(struct perf_addr_filter *filter, | 6625 | static bool perf_addr_filter_match(struct perf_addr_filter *filter, |
@@ -7848,7 +7839,11 @@ static void perf_event_addr_filters_apply(struct perf_event *event) | |||
7848 | list_for_each_entry(filter, &ifh->list, entry) { | 7839 | list_for_each_entry(filter, &ifh->list, entry) { |
7849 | event->addr_filters_offs[count] = 0; | 7840 | event->addr_filters_offs[count] = 0; |
7850 | 7841 | ||
7851 | if (perf_addr_filter_needs_mmap(filter)) | 7842 | /* |
7843 | * Adjust base offset if the filter is associated to a binary | ||
7844 | * that needs to be mapped: | ||
7845 | */ | ||
7846 | if (filter->inode) | ||
7852 | event->addr_filters_offs[count] = | 7847 | event->addr_filters_offs[count] = |
7853 | perf_addr_filter_apply(filter, mm); | 7848 | perf_addr_filter_apply(filter, mm); |
7854 | 7849 | ||