• Jiri Olsa's avatar
    perf/x86/intel/uncore: Make sure only uncore events are collected · af91568e
    Jiri Olsa authored
    The uncore_collect_events functions assumes that event group
    might contain only uncore events which is wrong, because it
    might contain any type of events.
    
    This bug leads to uncore framework touching 'not' uncore events,
    which could end up all sorts of bugs.
    
    One was triggered by Vince's perf fuzzer, when the uncore code
    touched breakpoint event private event space as if it was uncore
    event and caused BUG:
    
       BUG: unable to handle kernel paging request at ffffffff82822068
       IP: [<ffffffff81020338>] uncore_assign_events+0x188/0x250
       ...
    
    The code in uncore_assign_events() function was looking for
    event->hw.idx data while the event was initialized as a
    breakpoint with different members in event->hw union.
    
    This patch forces uncore_collect_events() to collect only uncore
    events.
    Reported-by: default avatarVince Weaver <vince@deater.net>
    Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Yan, Zheng <zheng.z.yan@intel.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/1418243031-20367-2-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    af91568e
perf_event_intel_uncore.c 29.5 KB