OSDN Git Service

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)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Mon, 2 Nov 2020 20:58:32 +0000 (15:58 -0500)
commitb02414c8f045ab3b9afc816c3735bc98c5c3d262
tree75e60c0537587c50e6690847ffc0aa7515a03ece
parent906695e59324635c62b5ae59df111151a546ca66
ring-buffer: Fix recursion protection transitions between interrupt context

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>
kernel/trace/ring_buffer.c