• Alexander Shishkin's avatar
    perf/core: Fix the mlock accounting, again · 36b3db03
    Alexander Shishkin authored
    Commit:
    
      5e6c3c7b ("perf/aux: Fix tracking of auxiliary trace buffer allocation")
    
    tried to guess the correct combination of arithmetic operations that would
    undo the AUX buffer's mlock accounting, and failed, leaking the bottom part
    when an allocation needs to be charged partially to both user->locked_vm
    and mm->pinned_vm, eventually leaving the user with no locked bonus:
    
      $ perf record -e intel_pt//u -m1,128 uname
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.061 MB perf.data ]
    
      $ perf record -e intel_pt//u -m1,128 uname
      Permission error mapping pages.
      Consider increasing /proc/sys/kernel/perf_event_mlock_kb,
      or try again with a smaller value of -m/--mmap_pages.
      (current value: 1,128)
    
    Fix this by subtracting both locked and pinned counts when AUX buffer is
    unmapped.
    Reported-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Tested-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    36b3db03
core.c 292 KB