• Alexander Shishkin's avatar
    perf/x86/intel/ds: Work around BTS leaking kernel addresses · a09d31f4
    Alexander Shishkin authored
    BTS leaks kernel addresses even in userspace-only mode due to imprecise IP
    sampling, so sometimes syscall entry points or page fault handler addresses
    end up in a userspace trace.
    
    Since this driver uses a relatively small buffer for BTS records and it has
    to iterate through them anyway, it can also take on the additional job of
    filtering out the records that contain kernel addresses when kernel space
    tracing is not enabled.
    
    This patch changes the bts code to skip the offending records from perf
    output. In order to request the exact amount of space on the ring buffer,
    we need to do an extra pass through the records to know how many there are
    of the valid ones, but considering the small size of the buffer, this extra
    pass adds very little overhead to the nmi handler. This way we won't end
    up with awkward IP samples with zero IPs in the perf stream.
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: hpa@zytor.com
    Link: http://lkml.kernel.org/r/1441030168-6853-2-git-send-email-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a09d31f4
perf_event_intel_ds.c 35.3 KB