From: Ingo Molnar <mingo@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Jiri Olsa <jolsa@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Mark Rutland <mark.rutland@arm.com>,
Namhyung Kim <namhyung@kernel.org>
Subject: [GIT PULL] perf events fixes
Date: Sat, 11 Jul 2026 13:38:01 +0200 [thread overview]
Message-ID: <alIrGZrzwc4Eeu2r@gmail.com> (raw)
Linus,
Please pull the latest perf/urgent Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-urgent-2026-07-11
for you to fetch changes up to 47915e855fb38b42133e31ba917d99565f862154:
Misc perf events fixes:
- Fix SVM #GP on AMD CPUs that LBR but not BRS
(Sandipan Das)
- Fix UAF bug in the perf AUX code (Lee Jia Jie)
- Fix address leakage in the AMD LBR code
(Sandipan Das)
- Fix address leakage in the AMD BRS code
(Sandipan Das)
Thanks,
Ingo
------------------>
Lee Jia Jie (1):
perf/aux: Fix page UAF in map_range()
Sandipan Das (3):
perf/x86/amd/core: Avoid enabling BRS from the SVM reload path
perf/x86/amd/lbr: Fix kernel address leakage
perf/x86/amd/brs: Fix kernel address leakage
arch/x86/events/amd/brs.c | 10 +++++-----
arch/x86/events/amd/core.c | 12 ++++++++----
arch/x86/events/amd/lbr.c | 3 ++-
kernel/events/core.c | 2 ++
4 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/arch/x86/events/amd/brs.c b/arch/x86/events/amd/brs.c
index 06f35a6b58a5..dc564688f3d7 100644
--- a/arch/x86/events/amd/brs.c
+++ b/arch/x86/events/amd/brs.c
@@ -259,13 +259,13 @@ void amd_brs_disable_all(void)
amd_brs_disable();
}
-static bool amd_brs_match_plm(struct perf_event *event, u64 to)
+static bool amd_brs_match_plm(struct perf_event *event, u64 from, u64 to)
{
int type = event->attr.branch_sample_type;
int plm_k = PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV;
int plm_u = PERF_SAMPLE_BRANCH_USER;
- if (!(type & plm_k) && kernel_ip(to))
+ if (!(type & plm_k) && (kernel_ip(to) || kernel_ip(from)))
return 0;
if (!(type & plm_u) && !kernel_ip(to))
@@ -338,11 +338,11 @@ void amd_brs_drain(void)
*/
to = (u64)(((s64)to << shift) >> shift);
- if (!amd_brs_match_plm(event, to))
- continue;
-
rdmsrq(brs_from(brs_idx), from);
+ if (!amd_brs_match_plm(event, from, to))
+ continue;
+
perf_clear_branch_entry_bitfields(br+nr);
br[nr].from = from;
diff --git a/arch/x86/events/amd/core.c b/arch/x86/events/amd/core.c
index 6569048a8c1c..a787409f5a62 100644
--- a/arch/x86/events/amd/core.c
+++ b/arch/x86/events/amd/core.c
@@ -754,13 +754,11 @@ static void amd_pmu_enable_event(struct perf_event *event)
x86_pmu_enable_event(event);
}
-static void amd_pmu_enable_all(int added)
+static void __amd_pmu_enable_all(void)
{
struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
int idx;
- amd_brs_enable_all();
-
for_each_set_bit(idx, x86_pmu.cntr_mask, X86_PMC_IDX_MAX) {
/* only activate events which are marked as active */
if (!test_bit(idx, cpuc->active_mask))
@@ -775,6 +773,12 @@ static void amd_pmu_enable_all(int added)
}
}
+static void amd_pmu_enable_all(int added)
+{
+ amd_brs_enable_all();
+ __amd_pmu_enable_all();
+}
+
static void amd_pmu_v2_enable_event(struct perf_event *event)
{
struct hw_perf_event *hwc = &event->hw;
@@ -1561,7 +1565,7 @@ static inline void amd_pmu_reload_virt(void)
* set global enable bits once again
*/
amd_pmu_v2_disable_all();
- amd_pmu_enable_all(0);
+ __amd_pmu_enable_all();
amd_pmu_v2_enable_all(0);
return;
}
diff --git a/arch/x86/events/amd/lbr.c b/arch/x86/events/amd/lbr.c
index 5b437dc8e4ce..9d9c961989d5 100644
--- a/arch/x86/events/amd/lbr.c
+++ b/arch/x86/events/amd/lbr.c
@@ -127,7 +127,8 @@ static void amd_pmu_lbr_filter(void)
}
/* If type does not correspond, then discard */
- if (type == X86_BR_NONE || (br_sel & type) != type) {
+ if (type == X86_BR_NONE || (br_sel & type) != type ||
+ (!(br_sel & X86_BR_KERNEL) && kernel_ip(cpuc->lbr_entries[i].from))) {
cpuc->lbr_entries[i].from = 0; /* mark invalid */
compress = true;
}
diff --git a/kernel/events/core.c b/kernel/events/core.c
index d7f3e2c2ecb1..ba5bd6a78fe7 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -7150,6 +7150,8 @@ static int map_range(struct perf_buffer *rb, struct vm_area_struct *vma)
int err = 0;
unsigned long pagenum;
+ guard(mutex)(&rb->aux_mutex);
+
/*
* We map this as a VM_PFNMAP VMA.
*
next reply other threads:[~2026-07-11 11:38 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-11 11:38 Ingo Molnar [this message]
2026-07-11 17:14 ` [GIT PULL] perf events fixes pr-tracker-bot
-- strict thread matches above, loose matches on Subject: below --
2026-07-05 7:37 Ingo Molnar
2026-07-05 15:46 ` pr-tracker-bot
2026-05-09 1:40 Ingo Molnar
2026-05-09 3:32 ` pr-tracker-bot
2026-04-12 7:17 Ingo Molnar
2026-04-12 17:45 ` pr-tracker-bot
2026-03-22 8:24 Ingo Molnar
2026-03-22 18:04 ` pr-tracker-bot
2026-03-01 9:00 Ingo Molnar
2026-03-01 21:37 ` pr-tracker-bot
2026-01-24 9:28 Ingo Molnar
2026-01-24 18:00 ` pr-tracker-bot
2025-12-12 9:36 Ingo Molnar
2025-12-13 18:12 ` pr-tracker-bot
2025-11-23 7:45 Ingo Molnar
2025-11-23 16:26 ` pr-tracker-bot
2025-11-01 7:13 Ingo Molnar
2025-11-01 17:41 ` pr-tracker-bot
2025-05-04 7:17 Ingo Molnar
2025-05-04 15:23 ` pr-tracker-bot
2025-04-26 8:35 Ingo Molnar
2025-04-26 17:06 ` pr-tracker-bot
2025-04-18 20:32 Ingo Molnar
2025-04-18 21:15 ` pr-tracker-bot
2025-04-10 21:10 Ingo Molnar
2025-04-10 22:52 ` pr-tracker-bot
2025-03-21 10:39 Ingo Molnar
2025-03-21 17:39 ` pr-tracker-bot
2025-03-07 12:22 Ingo Molnar
2025-03-07 21:04 ` pr-tracker-bot
2025-02-28 19:17 Ingo Molnar
2025-03-01 1:41 ` pr-tracker-bot
2024-06-02 7:08 Ingo Molnar
2024-06-02 16:41 ` pr-tracker-bot
2024-03-17 8:57 Ingo Molnar
2024-03-17 19:34 ` pr-tracker-bot
2023-10-01 8:35 Ingo Molnar
2023-10-01 17:08 ` pr-tracker-bot
2010-09-08 13:00 Ingo Molnar
2010-01-16 16:59 Ingo Molnar
2009-11-10 17:45 Ingo Molnar
2009-11-01 15:36 Ingo Molnar
2009-10-23 14:49 Ingo Molnar
2009-10-13 18:25 Ingo Molnar
2009-10-08 18:37 Ingo Molnar
2009-10-02 12:42 Ingo Molnar
2009-09-26 12:29 Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alIrGZrzwc4Eeu2r@gmail.com \
--to=mingo@kernel.org \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.