]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ring-buffer: Fix recursion protection transitions between interrupt context
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Mon, 2 Nov 2020 20:31:27 +0000 (15:31 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Nov 2020 11:39:01 +0000 (12:39 +0100)
commit9961dccadaebab32db887fd9cfd839a12cc53787
treea8f46c918855bf6ea2e400e51d171e15bf90259b
parent591ce666fd163c6e6fb6d3ce073334278f9fd116
ring-buffer: Fix recursion protection transitions between interrupt context

commit b02414c8f045ab3b9afc816c3735bc98c5c3d262 upstream.

The recursion protection of the ring buffer depends on preempt_count() to be
correct. But it is possible that the ring buffer gets called after an
interrupt comes in but before it updates the preempt_count(). This will
trigger a false positive in the recursion code.

Use the same trick from the ftrace function callback recursion code which
uses a "transition" bit that gets set, to allow for a single recursion for
to handle transitions between contexts.

Cc: stable@vger.kernel.org
Fixes: 567cd4da54ff4 ("ring-buffer: User context bit recursion checking")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/trace/ring_buffer.c