On 5/28/2020 9:30 AM, Andi Kleen wrote:
On Thu, May 28, 2020 at 06:15:27AM -0700, kan.li...@linux.intel.com wrote:
From: Kan Liang <kan.li...@linux.intel.com>

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.lai...@aculab.com>
Signed-off-by: Kan Liang <kan.li...@linux.intel.com>
---
  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.


Yes, it's generic function. Current MMIO uncore units invoke it to read counter.

Thanks,
Kan

Reply via email to