Skip to content

Commit adc38b4

Browse files
Peter ZijlstraIngo Molnar
authored andcommitted
perf/core: Introduce perf_free_addr_filters()
Replace _free_event()'s use of perf_addr_filters_splice()s use with an explicit perf_free_addr_filters() with the explicit propery that it is able to be called a second time without ill effect. Most notable, referencing event->pmu must be avoided when there are no filters left (from eg a previous call). Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Reviewed-by: Ravi Bangoria <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent b2996f5 commit adc38b4

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

kernel/events/core.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5339,8 +5339,7 @@ static bool exclusive_event_installable(struct perf_event *event,
53395339
return true;
53405340
}
53415341

5342-
static void perf_addr_filters_splice(struct perf_event *event,
5343-
struct list_head *head);
5342+
static void perf_free_addr_filters(struct perf_event *event);
53445343

53455344
static void perf_pending_task_sync(struct perf_event *event)
53465345
{
@@ -5439,7 +5438,7 @@ static void _free_event(struct perf_event *event)
54395438
}
54405439

54415440
perf_event_free_bpf_prog(event);
5442-
perf_addr_filters_splice(event, NULL);
5441+
perf_free_addr_filters(event);
54435442

54445443
__free_event(event);
54455444
}
@@ -11004,6 +11003,17 @@ static void perf_addr_filters_splice(struct perf_event *event,
1100411003
free_filters_list(&list);
1100511004
}
1100611005

11006+
static void perf_free_addr_filters(struct perf_event *event)
11007+
{
11008+
/*
11009+
* Used during free paths, there is no concurrency.
11010+
*/
11011+
if (list_empty(&event->addr_filters.list))
11012+
return;
11013+
11014+
perf_addr_filters_splice(event, NULL);
11015+
}
11016+
1100711017
/*
1100811018
* Scan through mm's vmas and see if one of them matches the
1100911019
* @filter; if so, adjust filter's address range.

0 commit comments

Comments
 (0)