On Thu, May 28, 2020 at 06:15:27AM -0700, kan.liang@xxxxxxxxxxxxxxx wrote:
From: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
An oops will be triggered, if perf tries to access an invalid address
which exceeds the mapped area.
Check the address before the actual access to MMIO sapce of an uncore
unit.
Ah ok the range check is here
Suggested-by: David Laight <David.Laight@xxxxxxxxxx>
Signed-off-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
---
arch/x86/events/intel/uncore.c | 3 +++
arch/x86/events/intel/uncore.h | 12 ++++++++++++
arch/x86/events/intel/uncore_snbep.c | 6 ++++++
3 files changed, 21 insertions(+)
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index cf76d66..284f8e7 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -132,6 +132,9 @@ u64 uncore_mmio_read_counter(struct intel_uncore_box *box,
if (!box->io_addr)
return 0;
+ if (!is_valid_mmio_offset(box, event->hw.event_base))
+ return 0;
Is this function used somewhere else? Otherwise it should be added
together with its users.