• Kan Liang's avatar
    perf mmap: Recalculate size for overwrite mode · dc6c35c6
    Kan Liang authored
    In perf_mmap__push(), the 'size' need to be recalculated, otherwise the
    invalid data might be pushed to the record in overwrite mode.
    
    The issue is introduced by commit 7fb4b407 ("perf mmap: Don't
    discard prev in backward mode").
    
    When the ring buffer is full in overwrite mode, backward_rb_find_range()
    will be called to recalculate the 'start' and 'end'. The 'size' needs to
    be recalculated accordingly.
    
    Unconditionally recalculate the 'size', not just for full ring buffer in
    overwrite mode. Because:
    
    - There is no harmful to recalculate the 'size' for other cases.
    - The code of calculating 'start' and 'end' will be factored out later.
      The new function does not need to return 'size'.
    Signed-off-by: default avatarKan Liang <kan.liang@intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: 7fb4b407 ("perf mmap: Don't discard prev in backward mode")
    Link: http://lkml.kernel.org/r/1516310792-208685-3-git-send-email-kan.liang@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    dc6c35c6
mmap.c 7.83 KB