All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	stable@vger.kernel.org, Petr Mladek <pmladek@suse.cz>
Subject: Re: [RFA][PATCH 2/5] ftrace/x86: One more missing sync after fixup of function modification failure
Date: Thu, 27 Feb 2014 12:35:53 -0500	[thread overview]
Message-ID: <20140227123553.03ce3c4b@gandalf.local.home> (raw)
In-Reply-To: <20140227171935.GD19580@localhost.localdomain>

On Thu, 27 Feb 2014 18:19:37 +0100
Frederic Weisbecker <fweisbec@gmail.com> wrote:

> On Thu, Feb 27, 2014 at 12:00:14PM -0500, Steven Rostedt wrote:
> > On Thu, 27 Feb 2014 17:37:32 +0100
> > Frederic Weisbecker <fweisbec@gmail.com> wrote:
> > 
> > > On Thu, Feb 27, 2014 at 10:46:18AM -0500, Steven Rostedt wrote:
> > > > [Request for Ack]
> > > > 
> > > > From: Petr Mladek <pmladek@suse.cz>
> > > > 
> > > > If a failure occurs while modifying ftrace function, it bails out and will
> > > > remove the tracepoints to be back to what the code originally was.
> > > > 
> > > > There is missing the final sync run across the CPUs after the fix up is done
> > > > and before the ftrace int3 handler flag is reset.
> > > 
> > > So IIUC the risk is that other CPUs may spuriously ignore non-ftrace traps if we don't sync the
> > > other cores after reverting the int3 before decrementing the modifying_ftrace_code counter?
> > 
> > Actually, the bug is that they will not ignore the ftrace traps after
> > we decrement modifying_ftrace_code counter. Here's the race:
> > 
> > 	CPU0				CPU1
> > 	----				----
> >   remove_breakpoint();
> >   modifying_ftrace_code = 0;
> > 
> > 				[still sees breakpoint]
> > 				<takes trap>
> > 				[sees modifying_ftrace_code as zero]
> > 				[no breakpoint handler]
> > 				[goto failed case]
> > 				[trap exception - kernel breakpoint, no
> > 				 handler]
> > 				BUG()
> > 
> > 
> > Even if we had a smp_wmb() after removing the breakpoint and clearing
> > the modifying_ftrace_code, we still need the smp_rmb() on the other
> > CPUS. The run_sync() does a IPI on all CPUs doing the smp_rmb().
> 
> Ah ok. My understanding was indeed that it doesn't ignore the ftrace trap,
> but I thought the consequence was that we return immediately from the trap
> handler.

I'll add my above cpu race diagram (is that what we call it?). That
should make this change more understandable.


> Ok but what I meant is to do this instead:
> 
>  fail_update:
>     probe_kernel_write((void *)ip, &old_code[0], 1);
> +   run_sync()
>     goto out;
> 
> Because with the current patch we also call run_sync() on add_break() failure.

Ah ok (my turn to understand). Yeah, if the add_break() fails, then we
don't need to do the run_sync().

But this is just for now, to prevent the add_update_code() error from
crashing. I have more patches that clean this up further. But they are
for 3.15.

-- Steve

  reply	other threads:[~2014-02-27 17:35 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-27 15:46 [RFA][PATCH 0/5] tracing: Ftrace error sync fix and tracepoint warn on failure Steven Rostedt
2014-02-27 15:46 ` [RFA][PATCH 1/5] ftrace/x86: Run a sync after fixup " Steven Rostedt
2014-02-27 15:58   ` Petr Mládek
2014-02-27 16:02     ` Steven Rostedt
2014-03-03 22:12   ` H. Peter Anvin
2014-03-03 22:18     ` Steven Rostedt
2014-03-03 22:27       ` H. Peter Anvin
2014-03-03 22:31         ` Steven Rostedt
2014-02-27 15:46 ` [RFA][PATCH 2/5] ftrace/x86: One more missing sync after fixup of function modification failure Steven Rostedt
2014-02-27 16:05   ` Steven Rostedt
2014-02-27 16:37   ` Frederic Weisbecker
2014-02-27 17:00     ` Steven Rostedt
2014-02-27 17:19       ` Frederic Weisbecker
2014-02-27 17:35         ` Steven Rostedt [this message]
2014-02-27 17:52           ` Frederic Weisbecker
2014-02-27 15:46 ` [RFA][PATCH 3/5] tracing: Do not add event files for modules that fail tracepoints Steven Rostedt
2014-02-27 16:31   ` Mathieu Desnoyers
2014-02-27 15:46 ` [RFA][PATCH 4/5] tracepoint: Do not waste memory on mods with no tracepoints Steven Rostedt
2014-02-27 15:46 ` [RFA][PATCH 5/5] tracepoint: Warn and notify if tracepoints are not loaded due to module taint Steven Rostedt
2014-02-27 16:33   ` Mathieu Desnoyers
2014-02-27 17:06     ` Steven Rostedt
2014-02-27 17:09     ` Steven Rostedt
2014-02-27 17:16       ` Mathieu Desnoyers

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=20140227123553.03ce3c4b@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.cz \
    --cc=stable@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.