Skip to content

Commit

Permalink
tracing: syscall_regfunc() should not skip kernel threads
Browse files Browse the repository at this point in the history
syscall_regfunc() ignores the kernel threads because "it has no effect",
see cc3b13c "Don't trace kernel thread syscalls" which added this check.

However, this means that a user-space task spawned by call_usermodehelper()
will run without TIF_SYSCALL_TRACEPOINT if sys_tracepoint_refcount != 0.

Remove this check. The unnecessary report from ret_from_fork path mentioned
by cc3b13c is no longer possible, see See commit fb45550 "make sure
that kernel_thread() callbacks call do_exit() themselves".

A kernel_thread() callback can only return and take the int_ret_from_sys_call
path after do_execve() succeeds, otherwise the kernel will crash. But in this
case it is no longer a kernel thread and thus is needs TIF_SYSCALL_TRACEPOINT.

Link: http://lkml.kernel.org/p/[email protected]

Signed-off-by: Oleg Nesterov <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
  • Loading branch information
oleg-nesterov authored and rostedt committed Jun 21, 2014
1 parent 8063e41 commit ea73c79
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions kernel/tracepoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -497,9 +497,7 @@ void syscall_regfunc(void)
if (!sys_tracepoint_refcount) {
read_lock(&tasklist_lock);
for_each_process_thread(p, 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);
}
read_unlock(&tasklist_lock);
}
Expand Down

0 comments on commit ea73c79

Please sign in to comment.