[SRU][N][PATCH 1/1] perf/core: Exit early on perf_mmap() fail
Cengiz Can
cengiz.can at canonical.com
Fri Sep 11 06:49:43 UTC 2026
From: Thomas Gleixner <tglx at linutronix.de>
When perf_mmap() fails to allocate a buffer, it still invokes the
event_mapped() callback of the related event. On X86 this might increase
the perf_rdpmc_allowed reference counter. But nothing undoes this as
perf_mmap_close() is never called in this case, which causes another
reference count leak.
Return early on failure to prevent that.
Fixes: 1e0fb9ec679c ("perf: Add pmu callbacks to track event mapping and unmapping")
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes at oracle.com>
Cc: stable at vger.kernel.org
(backported from commit 07091aade394f690e7b655578140ef84d0e8d7b0)
[bot_kybele: Kept the essential early "if (ret) return ret;" exit (which
prevents the event_mapped leak), but dropped upstream's
map_range/get_mapped/mapped refactor since this tree lacks those and uses the
older event->pmu->event_mapped() callback directly.]
CVE-2025-38565
Assisted-by: kybele:claude-opus-4.8
Signed-off-by: Cengiz Can <cengiz.can at canonical.com>
---
kernel/events/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 9d802f19dc00..f8013daf9b74 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -6728,6 +6728,9 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
mutex_unlock(aux_mutex);
mutex_unlock(&event->mmap_mutex);
+ if (ret)
+ return ret;
+
/*
* Since pinned accounting is per vm we cannot allow fork() to copy our
* vma.
--
2.53.0
More information about the kernel-team
mailing list