lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.4 092/100] trigger_next should increase position index
    Date
    From: Vasily Averin <vvs@virtuozzo.com>

    [ Upstream commit 6722b23e7a2ace078344064a9735fb73e554e9ef ]

    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.

    Without patch:
    # dd bs=30 skip=1 if=/sys/kernel/tracing/events/sched/sched_switch/trigger
    dd: /sys/kernel/tracing/events/sched/sched_switch/trigger: cannot skip to specified offset
    n traceoff snapshot stacktrace enable_event disable_event enable_hist disable_hist hist
    # Available triggers:
    # traceon traceoff snapshot stacktrace enable_event disable_event enable_hist disable_hist hist
    6+1 records in
    6+1 records out
    206 bytes copied, 0.00027916 s, 738 kB/s

    Notice the printing of "# Available triggers:..." after the line.

    With the patch:
    # dd bs=30 skip=1 if=/sys/kernel/tracing/events/sched/sched_switch/trigger
    dd: /sys/kernel/tracing/events/sched/sched_switch/trigger: cannot skip to specified offset
    n traceoff snapshot stacktrace enable_event disable_event enable_hist disable_hist hist
    2+1 records in
    2+1 records out
    88 bytes copied, 0.000526867 s, 167 kB/s

    It only prints the end of the file, and does not restart.

    Link: http://lkml.kernel.org/r/3c35ee24-dd3a-8119-9c19-552ed253388a@virtuozzo.com

    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/trace/trace_events_trigger.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
    index 8be66a2b0cacf..6524920c6ebc8 100644
    --- a/kernel/trace/trace_events_trigger.c
    +++ b/kernel/trace/trace_events_trigger.c
    @@ -121,9 +121,10 @@ static void *trigger_next(struct seq_file *m, void *t, loff_t *pos)
    {
    struct trace_event_file *event_file = event_file_data(m->private);

    - if (t == SHOW_AVAILABLE_TRIGGERS)
    + if (t == SHOW_AVAILABLE_TRIGGERS) {
    + (*pos)++;
    return NULL;
    -
    + }
    return seq_list_next(t, &event_file->triggers, pos);
    }

    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 17:28    [W:5.835 / U:0.456 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site