lkml.org 
[lkml]   [2020]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 254/255] coresight: Fix uninitialised pointer bug in etm_setup_aux()
    Date
    From: Mike Leach <mike.leach@linaro.org>

    commit 39a7661dcf655c8198fd5d72412f5030a8e58444 upstream.

    Commit [bb1860efc817] changed the sink handling code introducing an
    uninitialised pointer bug. This results in the default sink selection
    failing.

    Prior to commit:

    static void etm_setup_aux(...)

    <snip>
    struct coresight_device *sink;
    <snip>

    /* First get the selected sink from user space. */
    if (event->attr.config2) {
    id = (u32)event->attr.config2;
    sink = coresight_get_sink_by_id(id);
    } else {
    sink = coresight_get_enabled_sink(true);
    }
    <ctd>

    *sink always initialised - possibly to NULL which triggers the
    automatic sink selection.

    After commit:

    static void etm_setup_aux(...)

    <snip>
    struct coresight_device *sink;
    <snip>

    /* First get the selected sink from user space. */
    if (event->attr.config2) {
    id = (u32)event->attr.config2;
    sink = coresight_get_sink_by_id(id);
    }
    <ctd>

    *sink pointer uninitialised when not providing a sink on the perf command
    line. This breaks later checks to enable automatic sink selection.

    Fixes: bb1860efc817 ("coresight: etm: perf: Sink selection using sysfs is deprecated")
    Signed-off-by: Mike Leach <mike.leach@linaro.org>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20201029164559.1268531-3-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/hwtracing/coresight/coresight-etm-perf.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/hwtracing/coresight/coresight-etm-perf.c
    +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
    @@ -210,7 +210,7 @@ static void *etm_setup_aux(struct perf_e
    u32 id;
    int cpu = event->cpu;
    cpumask_t *mask;
    - struct coresight_device *sink;
    + struct coresight_device *sink = NULL;
    struct etm_event_data *event_data = NULL;

    event_data = alloc_event_data(cpu);

    \
     
     \ /
      Last update: 2020-11-17 15:10    [W:4.078 / U:0.428 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site