Messages in this thread | | | Date | Thu, 10 Apr 2014 09:28:42 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH RESEND 2/2] tracing: syscall_regfunc() should not skip kernel threads |
| |
On Wed, 9 Apr 2014 19:06:16 +0200 Oleg Nesterov <oleg@redhat.com> wrote:
> 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.
What about doing the set there? That is, we could add a check in the call_userspacehelper() just before it does the do_execve, that if sys_tracepoint_refcount is set, we set the TIF flag.
-- Steve
> > 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 a16754b..4e1e4ca 100644 > --- a/kernel/tracepoint.c > +++ b/kernel/tracepoint.c > @@ -737,9 +737,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); > }
| |