summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2025-12-05 16:16:39 -0800
committerPeter Zijlstra <peterz@infradead.org>2025-12-17 13:31:04 +0100
commit991bdf7e9d6cc74c1de215d1a05c23ff61076bf0 (patch)
tree337f8f162ed1768b6e00329156abed8426c9b182 /kernel
parentb9e52b11d2e5e403afaf69a7f8d6b29f8380ed38 (diff)
perf: Move security_perf_event_free() call to __free_event()
Move the freeing of any security state associated with a perf event from _free_event() to __free_event(), i.e. invoke security_perf_event_free() in the error paths for perf_event_alloc(). This will allow adding potential error paths in perf_event_alloc() that can occur after allocating security state. Note, kfree() and thus security_perf_event_free() is a nop if event->security is NULL, i.e. calling security_perf_event_free() even if security_perf_event_alloc() fails or is never reached is functionality ok. Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Tested-by: Xudong Hao <xudong.hao@intel.com> Link: https://patch.msgid.link/20251206001720.468579-4-seanjc@google.com
Diffstat (limited to 'kernel')
-rw-r--r--kernel/events/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index fab358daa42e..6973483d0dfa 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5601,6 +5601,8 @@ static void __free_event(struct perf_event *event)
{
struct pmu *pmu = event->pmu;
+ security_perf_event_free(event);
+
if (event->attach_state & PERF_ATTACH_CALLCHAIN)
put_callchain_buffers();
@@ -5664,8 +5666,6 @@ static void _free_event(struct perf_event *event)
unaccount_event(event);
- security_perf_event_free(event);
-
if (event->rb) {
/*
* Can happen when we close an event with re-directed output.