lkml.org 
[lkml]   [2022]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[for-next][PATCH 16/25] tracing: Fix issue of missing one synthetic field
    From: Zheng Yejian <zhengyejian1@huawei.com>

    The maximum number of synthetic fields supported is defined as
    SYNTH_FIELDS_MAX which value currently is 64, but it actually fails
    when try to generate a synthetic event with 64 fields by executing like:

    # echo "my_synth_event int v1; int v2; int v3; int v4; int v5; int v6;\
    int v7; int v8; int v9; int v10; int v11; int v12; int v13; int v14;\
    int v15; int v16; int v17; int v18; int v19; int v20; int v21; int v22;\
    int v23; int v24; int v25; int v26; int v27; int v28; int v29; int v30;\
    int v31; int v32; int v33; int v34; int v35; int v36; int v37; int v38;\
    int v39; int v40; int v41; int v42; int v43; int v44; int v45; int v46;\
    int v47; int v48; int v49; int v50; int v51; int v52; int v53; int v54;\
    int v55; int v56; int v57; int v58; int v59; int v60; int v61; int v62;\
    int v63; int v64" >> /sys/kernel/tracing/synthetic_events

    Correct the field counting to fix it.

    Link: https://lore.kernel.org/linux-trace-kernel/20221207091557.3137904-1-zhengyejian1@huawei.com

    Cc: <mhiramat@kernel.org>
    Cc: <zanussi@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: c9e759b1e845 ("tracing: Rework synthetic event command parsing")
    Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    ---
    kernel/trace/trace_events_synth.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c
    index c3b582d19b62..67592eed0be8 100644
    --- a/kernel/trace/trace_events_synth.c
    +++ b/kernel/trace/trace_events_synth.c
    @@ -1282,12 +1282,12 @@ static int __create_synth_event(const char *name, const char *raw_fields)
    goto err_free_arg;
    }

    - fields[n_fields++] = field;
    if (n_fields == SYNTH_FIELDS_MAX) {
    synth_err(SYNTH_ERR_TOO_MANY_FIELDS, 0);
    ret = -EINVAL;
    goto err_free_arg;
    }
    + fields[n_fields++] = field;

    n_fields_this_loop++;
    }
    --
    2.35.1

    \
     
     \ /
      Last update: 2022-12-10 14:59    [W:4.664 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site