mirror of https://gitee.com/openkylin/linux.git
tracing: syscall_regfunc() should not skip kernel threads
syscall_regfunc() ignores the kernel threads because "it has no effect", seecc3b13c1
"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 bycc3b13c1
is no longer possible, see See commitfb45550d76
"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/20140413185938.GD20668@redhat.com Signed-off-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
8063e41d2f
commit
ea73c79e33
|
@ -497,8 +497,6 @@ void syscall_regfunc(void)
|
||||||
if (!sys_tracepoint_refcount) {
|
if (!sys_tracepoint_refcount) {
|
||||||
read_lock(&tasklist_lock);
|
read_lock(&tasklist_lock);
|
||||||
for_each_process_thread(p, t) {
|
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);
|
read_unlock(&tasklist_lock);
|
||||||
|
|
Loading…
Reference in New Issue