commit bb19af816025 ("powerpc/perf: Prevent kernel address leak to
userspace via BHRB buffer") added a check in bhrb_read() to filter
the kernel address from BHRB buffer. This patch modified it to avoid
that check for PowerISA v3.1 based processors, since PowerISA v3.1
allows only MSR[PR]=1 address to be written to BHRB buffer.

Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com>
---
 arch/powerpc/perf/core-book3s.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index 0ffb757d..bd125fe 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -469,8 +469,11 @@ static void power_pmu_bhrb_read(struct perf_event *event, 
struct cpu_hw_events *
                         * addresses at this point. Check the privileges before
                         * exporting it to userspace (avoid exposure of regions
                         * where we could have speculative execution)
+                        * Incase of ISA v3.1, BHRB will capture only user-space
+                        * addresses, hence include a check before filtering 
code
                         */
-                       if (is_kernel_addr(addr) && 
perf_allow_kernel(&event->attr) != 0)
+                       if (!(ppmu->flags & PPMU_ARCH_310S) &&
+                               is_kernel_addr(addr) && 
perf_allow_kernel(&event->attr) != 0)
                                continue;
 
                        /* Branches are read most recent first (ie. mfbhrb 0 is
-- 
1.8.3.1

Reply via email to