Re: [PATCH bpf-next v3 2/7] ftrace: Fix deadloop caused by direct call in ftrace selftest

Xu Kuohai
2022-04-26T07:36:44Z

On 4/25/2022 11:05 PM, Steven Rostedt wrote:
> On Sun, 24 Apr 2022 11:40:23 -0400
> Xu Kuohai <xukuohai@huawei.com> wrote:
>
>> diff --git a/kernel/trace/trace_selftest.c b/kernel/trace/trace_selftest.c
>> index abcadbe933bb..d2eff2b1d743 100644
>> --- a/kernel/trace/trace_selftest.c
>> +++ b/kernel/trace/trace_selftest.c
>> @@ -785,8 +785,24 @@ static struct fgraph_ops fgraph_ops __initdata = {
>> };
>>
>> #ifdef CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
>> +#ifdef CONFIG_ARM64
>
> Please find a way to add this in arm specific code. Do not add architecture
> defines in generic code.
>
> You could add:
>
> #ifndef ARCH_HAVE_FTRACE_DIRECT_TEST_FUNC
> noinline __noclone static void trace_direct_tramp(void) { }
> #endif
>
> here, and in arch/arm64/include/ftrace.h
>
> #define ARCH_HAVE_FTRACE_DIRECT_TEST_FUNC
>
> and define your test function in the arm64 specific code.
>
> -- Steve
>
>

will move this to arch/arm64/ in v4, thanks.

>
>
>> +extern void trace_direct_tramp(void);
>> +
>> +asm (
>> +" .pushsection .text, \"ax\", @progbits\n"
>> +" .type trace_direct_tramp, %function\n"
>> +" .global trace_direct_tramp\n"
>> +"trace_direct_tramp:"
>> +" mov x10, x30\n"
>> +" mov x30, x9\n"
>> +" ret x10\n"
>> +" .size trace_direct_tramp, .-trace_direct_tramp\n"
>> +" .popsection\n"
>> +);
>> +#else
>> noinline __noclone static void trace_direct_tramp(void) { }
>> #endif
>> +#endif
>>
>> /*
>> * Pretty much the same than for the function tracer from which the selftest
>
> .