[PATCH RESEND] arm64: arch_timer: fix the infinite recursion when enable ftrace and erratum workaround
Daniel Lezcano
daniel.lezcano at linaro.org
Mon Jul 31 08:33:00 PDT 2017
On 26/07/2017 04:42, Ding Tianhong wrote:
>
>
> On 2017/7/10 19:22, Mark Rutland wrote:
>> On Sun, Jul 09, 2017 at 04:30:54PM +0800, Ding Tianhong wrote:
>>> When enable preempt and debug ftrace, and perform the following steps, the
>>> system will hang:
>>> mount -t debugfs nodev /sys/kernel/debug/
>>> cd /sys/kernel/debug/tracing/
>>> echo function_graph > current_tracer
>>>
>>> This is because tracing the preempt_disable/enable calls would cause
>>> trace_clock() which would get local timer to go into infinite recursion
>>> when enable the arch timer erratum workaround for some chips, so Prevent
>>> tracing of preempt_disable/enable() in arch_timer_reg_read_stable().
>>>
>>> This problem is similar to the fixed by upstream commit 96b3d28bf4
>>> ("sched/clock: Prevent tracing recursion in sched_clock_cpu()").
>>
>> As I mentioned before, the patch itself looks fine to me, but the commit
>> message is somewhat difficult to read.
>>
>> Can we please change this to:
>>
>> arm64: arch_timer: avoid infinite recursion when ftrace is enabled
>>
>> On platforms with an arch timer erratum workaround, it's possible for
>> arch_timer_reg_read_stable() to recurse into itself when certain
>> tracing options are enabled, leading to stack overflows and related
>> problems.
>>
>> For example, when PREEMPT_TRACER and FUNCTION_GRAPH_TRACER are
>> selected, it's possible to trigger this with:
>>
>> $ mount -t debugfs nodev /sys/kernel/debug/
>> $ echo function_graph > /sys/kernel/debug/tracing/current_tracer
>>
>> The problem is that in such cases, preempt_disable() instrumentation
>> attempts to acquire a timestamp via trace_clock(), resulting in a call
>> back to arch_timer_reg_read_stable(), and hence recursion.
>>
>> This patch changes arch_timer_reg_read_stable() to use
>> preempt_{disable,enable}_notrace(), which avoids this.
>>
>> With that commit message:
>>
>> Acked-by: Mark Rutland <mark.rutland at arm.com>
>>
>> Daniel, Thomas, would you be happy to fold that in when picking this? Or
>> would you prefer that I fix this up and resend?
>>
>
> Hi Danial, Thomas:
>
> It looks didn't merge to the mainline tree yet, should I update the commit and
> resend this patch again?
>
Yes, please. I'm coming back from two weeks OoO, that will help.
Thanks.
-- Daniel
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
More information about the linux-arm-kernel
mailing list