[PATCH v2] arm64: arch_timer: avoid infinite recursion when ftrace is enabled

Daniel Lezcano daniel.lezcano at linaro.org
Thu Aug 10 05:38:16 PDT 2017


On 10/08/2017 05:33, Ding Tianhong wrote:
> add Danial and Thomas.
> 
> On 2017/8/10 10:52, Ding Tianhong wrote:
>> 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.
>>
>> This problem is similar to the fixed by upstream commit 96b3d28bf4
>> ("sched/clock: Prevent tracing recursion in sched_clock_cpu()").
>>
>> Fixes: 6acc71ccac71 ("arm64: arch_timer: Allows a CPU-specific erratum to only affect a subset of CPUs")
>> Signed-off-by: Ding Tianhong <dingtianhong at huawei.com>
>> Acked-by: Mark Rutland <mark.rutland at arm.com>
>> Acked-by: Marc Zyngier <marc.zyngier at arm.com>
>> ---


Applied.

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