• Wonhyuk Yang's avatar
    tracing: Fix return value of trace_pid_write() · b27f266f
    Wonhyuk Yang authored
    Setting set_event_pid with trailing whitespace lead to endless write
    system calls like below.
    
        $ strace echo "123 " > /sys/kernel/debug/tracing/set_event_pid
        execve("/usr/bin/echo", ["echo", "123 "], ...) = 0
        ...
        write(1, "123 \n", 5)                   = 4
        write(1, "\n", 1)                       = 0
        write(1, "\n", 1)                       = 0
        write(1, "\n", 1)                       = 0
        write(1, "\n", 1)                       = 0
        write(1, "\n", 1)                       = 0
        ....
    
    This is because, the result of trace_get_user's are not returned when it
    read at least one pid. To fix it, update read variable even if
    parser->idx == 0.
    
    The result of applied patch is below.
    
        $ strace echo "123 " > /sys/kernel/debug/tracing/set_event_pid
        execve("/usr/bin/echo", ["echo", "123 "], ...) = 0
        ...
        write(1, "123 \n", 5)                   = 5
        close(1)                                = 0
    
    Link: https://lkml.kernel.org/r/20220503050546.288911-1-vvghjk1234@gmail.com
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Baik Song An <bsahn@etri.re.kr>
    Cc: Hong Yeon Kim <kimhy@etri.re.kr>
    Cc: Taeung Song <taeung@reallinux.co.kr>
    Cc: linuxgeek@linuxgeek.io
    Cc: stable@vger.kernel.org
    Fixes: 49090107 ("tracing: Add set_event_pid directory for future use")
    Signed-off-by: default avatarWonhyuk Yang <vvghjk1234@gmail.com>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    b27f266f
trace.c 249 KB