• Ian Rogers's avatar
    libperf: Lazily allocate/size mmap event copy · 366efbff
    Ian Rogers authored
    The event copy in the mmap is used to have storage to read an event. Not
    all users of mmaps read the events, such as perf record. The amount of
    buffer was also statically set to PERF_SAMPLE_MAX_SIZE rather than the
    amount necessary from the header's event size.
    
    Switch to a model where the event_copy is reallocated if too small to
    the event's size. This adds the potential for the event to move, so if a
    copy of the event pointer were stored it could be broken. All the
    current users do:
    
      while(event = perf_mmap__read_event()) { ... }
    
    and so they would be broken due to the event being overwritten if they
    had stored the pointer. Manual inspection and address sanitizer testing
    also shows the event pointer not being stored.
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Colin Ian King <colin.i.king@gmail.com>
    Cc: Dmitrii Dolgov <9erthalion6@gmail.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Guilherme Amadio <amadio@gentoo.org>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: K Prateek Nayak <kprateek.nayak@amd.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Li Dong <lidong@vivo.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Miguel Ojeda <ojeda@kernel.org>
    Cc: Ming Wang <wangming01@loongson.cn>
    Cc: Nick Terrell <terrelln@fb.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Cc: Wenyu Liu <liuwenyu7@huawei.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/r/20231127220902.1315692-3-irogers@google.com
    [ Replace two lines with equivalent zfree(&map->event_copy) ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    366efbff
mmap.h 1.46 KB