lkml.org 
[lkml]   [2012]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2/2] tracing: syscall_regfunc() should not skip kernel threads
    syscall_regfunc() ignores the kernel thread because "it has
    no effect", see cc3b13c1 "Don't trace kernel thread syscalls".

    However, this means that a user-space task spawned by
    call_usermodehelper() won't report the system calls if
    kernel_execve() is called when sys_tracepoint_refcount != 0.

    Remove this check. Hopefully the unnecessary report from
    ret_from_fork path mentioned by cc3b13c1 is fine. In fact
    "this is the only case" is not true. Say, kernel_execve()
    itself does "int 80" on X86_32. Hopefully fine too.

    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    ---
    kernel/tracepoint.c | 4 +---
    1 files changed, 1 insertions(+), 3 deletions(-)

    diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c
    index e2a4523..2403e60 100644
    --- a/kernel/tracepoint.c
    +++ b/kernel/tracepoint.c
    @@ -739,9 +739,7 @@ void syscall_regfunc(void)
    if (!sys_tracepoint_refcount) {
    read_lock(&tasklist_lock);
    do_each_thread(g, t) {
    - /* Skip kernel threads. */
    - if (!(t->flags & PF_KTHREAD))
    - set_tsk_thread_flag(t, TIF_SYSCALL_TRACEPOINT);
    + set_tsk_thread_flag(t, TIF_SYSCALL_TRACEPOINT);
    } while_each_thread(g, t);
    read_unlock(&tasklist_lock);
    }
    --
    1.5.5.1



    \
     
     \ /
      Last update: 2012-04-01 23:41    [W:0.022 / U:30.276 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site