Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -9077,26 +9077,29 @@ static void perf_event_addr_filters_apply(struct perf_event *event)
|
||||
if (task == TASK_TOMBSTONE)
|
||||
return;
|
||||
|
||||
if (!ifh->nr_file_filters)
|
||||
return;
|
||||
if (ifh->nr_file_filters) {
|
||||
mm = get_task_mm(event->ctx->task);
|
||||
if (!mm)
|
||||
goto restart;
|
||||
|
||||
mm = get_task_mm(event->ctx->task);
|
||||
if (!mm)
|
||||
goto restart;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
down_read(&mm->mmap_sem);
|
||||
}
|
||||
|
||||
raw_spin_lock_irqsave(&ifh->lock, flags);
|
||||
list_for_each_entry(filter, &ifh->list, entry) {
|
||||
event->addr_filter_ranges[count].start = 0;
|
||||
event->addr_filter_ranges[count].size = 0;
|
||||
if (filter->path.dentry) {
|
||||
/*
|
||||
* Adjust base offset if the filter is associated to a
|
||||
* binary that needs to be mapped:
|
||||
*/
|
||||
event->addr_filter_ranges[count].start = 0;
|
||||
event->addr_filter_ranges[count].size = 0;
|
||||
|
||||
/*
|
||||
* Adjust base offset if the filter is associated to a binary
|
||||
* that needs to be mapped:
|
||||
*/
|
||||
if (filter->path.dentry)
|
||||
perf_addr_filter_apply(filter, mm, &event->addr_filter_ranges[count]);
|
||||
} else {
|
||||
event->addr_filter_ranges[count].start = filter->offset;
|
||||
event->addr_filter_ranges[count].size = filter->size;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
@@ -9104,9 +9107,11 @@ static void perf_event_addr_filters_apply(struct perf_event *event)
|
||||
event->addr_filters_gen++;
|
||||
raw_spin_unlock_irqrestore(&ifh->lock, flags);
|
||||
|
||||
up_read(&mm->mmap_sem);
|
||||
if (ifh->nr_file_filters) {
|
||||
up_read(&mm->mmap_sem);
|
||||
|
||||
mmput(mm);
|
||||
mmput(mm);
|
||||
}
|
||||
|
||||
restart:
|
||||
perf_event_stop(event, 1);
|
||||
|
Reference in New Issue
Block a user