Re: [PATCH 11/11 v2.2] ftrace: Add recording of functions that caused recursion

From: Steven Rostedt
Date: Wed Nov 04 2020 - 14:13:40 EST


On Tue, 3 Nov 2020 15:10:43 +0100
Petr Mladek <pmladek@xxxxxxxx> wrote:

> BTW: What is actually the purpose of paranoid_test, please?
>
> It prevents nested ftrace_record_recursion() calls on the same CPU
> (recursion, nesting from IRQ, NMI context).
>
> Parallel calls from different CPUs are still possible:
>
> CPU0 CPU1
> if (!atomic_read(&paranoid_test)) if (!atomic_read(&paranoid_test))
> // passes // passes
> atomic_inc(&paranoid_test); atomic_inc(&paranoid_test);
>
>
> I do not see how a nested call could cause crash while a parallel
> one would be OK.

The problem was that I don't want something in the recording to get traced,
and that detect the recursion, which would then call the recording, which
would also be traced and detect the recursion and that would call the
recording, which would also be traced and detect the recursion and that
would call the recording, which .... (BOOM!)

Anyway, I decided to simply use another bit to protect against that.

New patch: