• L
    perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet · 35bb59c1
    Leo Yan 提交于
    Robert Walker reported a segmentation fault is observed when process
    CoreSight trace data; this issue can be easily reproduced by the command
    'perf report --itrace=i1000i' for decoding tracing data.
    
    If neither the 'b' flag (synthesize branches events) nor 'l' flag
    (synthesize last branch entries) are specified to option '--itrace',
    cs_etm_queue::prev_packet will not been initialised.  After merging the
    code to support exception packets and sample flags, there introduced a
    number of uses of cs_etm_queue::prev_packet without checking whether it
    is valid, for these cases any accessing to uninitialised prev_packet
    will cause crash.
    
    As cs_etm_queue::prev_packet is used more widely now and it's already
    hard to follow which functions have been called in a context where the
    validity of cs_etm_queue::prev_packet has been checked, this patch
    always allocates memory for cs_etm_queue::prev_packet.
    Reported-by: NRobert Walker <robert.walker@arm.com>
    Suggested-by: NRobert Walker <robert.walker@arm.com>
    Signed-off-by: NLeo Yan <leo.yan@linaro.org>
    Tested-by: NRobert Walker <robert.walker@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Suzuki K Poulouse <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Fixes: 7100b12c ("perf cs-etm: Generate branch sample for exception packet")
    Fixes: 24fff5eb ("perf cs-etm: Avoid stale branch samples when flush packet")
    Link: http://lkml.kernel.org/r/20190428083228.20246-1-leo.yan@linaro.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    35bb59c1
cs-etm.c 52.1 KB