• Alexander Shishkin's avatar
    perf: Synchronously free aux pages in case of allocation failure · 45c815f0
    Alexander Shishkin authored
    We are currently using asynchronous deallocation in the error path in
    AUX mmap code, which is unnecessary and also presents a problem for users
    that wish to probe for the biggest possible buffer size they can get:
    they'll get -EINVAL on all subsequent attemts to allocate a smaller
    buffer before the asynchronous deallocation callback frees up the pages
    from the previous unsuccessful attempt.
    
    Currently, gdb does that for allocating AUX buffers for Intel PT traces.
    More specifically, overwrite mode of AUX pmus that don't support hardware
    sg (some implementations of Intel PT, for instance) is limited to only
    one contiguous high order allocation for its buffer and there is no way
    of knowing its size without trying.
    
    This patch changes error path freeing to be synchronous as there won't
    be any contenders for the AUX pages at that point.
    Reported-by: default avatarMarkus Metzger <markus.t.metzger@intel.com>
    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: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.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: vince@deater.net
    Link: http://lkml.kernel.org/r/1453216469-9509-1-git-send-email-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    45c815f0
ring_buffer.c 17.9 KB