summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2026-06-18 14:18:27 +0200
committerPeter Zijlstra <peterz@infradead.org>2026-06-19 12:05:00 +0200
commite62d4192e593630f355094adc467058a05bdc935 (patch)
treefc5679ba9949f5b0dc7ece28a9c93e7039b3bef6 /kernel
parent8cd9520d35a6c38db6567e97dd93b1f11f185dc6 (diff)
downloadlwn-e62d4192e593630f355094adc467058a05bdc935.tar.gz
lwn-e62d4192e593630f355094adc467058a05bdc935.zip
perf: Fix addr_filter_ranges lifetime
Lee Jia Jie reported that since event::addr_filter_ranges is used under RCU, it should be RCU freed. Reported-by: Lee Jia Jie <jiajie.lee@starlabs.sg> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/events/core.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 7935d5663944..c3a84c7bcaeb 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5303,6 +5303,7 @@ static void free_event_rcu(struct rcu_head *head)
if (event->ns)
put_pid_ns(event->ns);
perf_event_free_filter(event);
+ kfree(event->addr_filter_ranges);
kmem_cache_free(perf_event_cache, event);
}
@@ -5750,8 +5751,6 @@ static void __free_event(struct perf_event *event)
if (event->attach_state & PERF_ATTACH_CALLCHAIN)
put_callchain_buffers();
- kfree(event->addr_filter_ranges);
-
if (event->attach_state & PERF_ATTACH_EXCLUSIVE)
exclusive_event_destroy(event);