From: Oleg Nesterov <oleg@redhat.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
Frederic Weisbecker <fweisbec@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] tracing: syscall_*regfunc() can race with copy_process()
Date: Sun, 17 Mar 2013 20:00:23 +0100 [thread overview]
Message-ID: <20130317190023.GA24023@redhat.com> (raw)
In-Reply-To: <1363546123.25967.125.camel@gandalf.local.home>
On 03/17, Steven Rostedt wrote:
>
> On Sun, 2013-03-17 at 19:28 +0100, Oleg Nesterov wrote:
> > syscall_regfunc() and syscall_unregfunc() should set/clear
> > TIF_SYSCALL_TRACEPOINT system-wide, but do_each_thread() can race
> > with copy_process() and miss the new child which was not added to
> > init_task.tasks list yet.
> >
> > Change copy_process() to update the child's TIF_SYSCALL_TRACEPOINT
> > under tasklist.
>
> Is this because "p = dup_task_struct(current);" is outside the lock?
> Probably should state this in the change log.
Not only, syscall_regfunc/syscall_unregfunc can miss the new child.
Just suppose that syscall_regfunc() takes tasklist right before the
forking task tries to take it for writing and and the child to the
list.
> > +#ifdef CONFIG_TRACEPOINTS
> > + if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
> > + set_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
> > + else
> > + clear_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
> > +#endif
>
> I hate seeing #ifdef code like this in C files. Can you add a function
> to set this in include/trace/syscalls.h:
It seems that everyone hates them, except me ;)
> #ifdef CONFIG_TRACEPOINTS
> static inline void syscall_tracepoint_update(struct task_struct *p)
> {
> if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
> set_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
> else
> clear_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
> }
> #else
> static inline void syscall_tracepoint_update(struct task_struct *p) {}
> #endif
OK, thanks, will do. But perhaps tracepoint_fork() would be better?
Oleg.
next prev parent reply other threads:[~2013-03-17 19:02 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-17 18:28 [PATCH RESEND 0/2] TIF_SYSCALL_TRACEPOINT fixes Oleg Nesterov
2013-03-17 18:28 ` [PATCH 1/2] tracing: syscall_*regfunc() can race with copy_process() Oleg Nesterov
2013-03-17 18:48 ` Steven Rostedt
2013-03-17 19:00 ` Oleg Nesterov [this message]
2013-03-17 19:34 ` Steven Rostedt
2013-03-18 16:33 ` Oleg Nesterov
2013-03-18 16:34 ` [PATCH v2 " Oleg Nesterov
2013-03-20 19:16 ` Steven Rostedt
2013-03-17 18:28 ` [PATCH 2/2] tracing: syscall_regfunc() should not skip kernel threads Oleg Nesterov
2013-03-17 18:54 ` Steven Rostedt
2013-03-17 19:04 ` Oleg Nesterov
2013-03-17 19:36 ` Steven Rostedt
2013-03-18 16:26 ` Oleg Nesterov
2013-03-19 15:10 ` David Howells
2013-03-19 15:36 ` Steven Rostedt
2013-03-19 21:27 ` H. Peter Anvin
-- strict thread matches above, loose matches on Subject: below --
2012-03-30 18:31 syscall_regfunc() && TIF_SYSCALL_TRACEPOINT Oleg Nesterov
2012-03-30 19:02 ` Steven Rostedt
2012-03-30 20:15 ` Oleg Nesterov
2012-03-31 0:13 ` Steven Rostedt
2012-03-31 20:45 ` Oleg Nesterov
2012-03-31 21:37 ` Steven Rostedt
2012-04-01 21:37 ` [PATCH 0/2] (Was: syscall_regfunc() && TIF_SYSCALL_TRACEPOINT) Oleg Nesterov
2012-04-01 21:38 ` [PATCH 1/2] tracing: syscall_*regfunc() can race with copy_process() Oleg Nesterov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130317190023.GA24023@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox