On Wed, 10 May 2017, Michael Ellerman wrote:

> Thomas Gleixner <t...@linutronix.de> writes:
> 
> > @@ -130,6 +130,7 @@ void __static_key_slow_inc(struct static
> >      * the all CPUs, for that to be serialized against CPU hot-plug
> >      * we need to avoid CPUs coming online.
> >      */
> > +   lockdep_assert_hotplug_held();
> >     jump_label_lock();
> >     if (atomic_read(&key->enabled) == 0) {
> >             atomic_set(&key->enabled, -1);
> 
> I seem to be hitting this assert from the ftrace event selftests,
> enabled at boot with CONFIG_FTRACE_STARTUP_TEST=y, using next-20170509
> (on powerpc).
> 
> The stupidly obvious (or perhaps obviously stupid) patch below fixes it:

Kinda. There is more horror in that area lurking and I'm still trying to
figure out all the convoluted call pathes.

Thanks,

        tglx

> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index daefdee9411a..5531f7ce8fa6 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -3241,9 +3241,19 @@ static __init void event_trace_self_tests(void)
>                       continue;
>               }
>  
> +             get_online_cpus();
> +             mutex_lock(&event_mutex);
>               ftrace_event_enable_disable(file, 1);
> +             mutex_unlock(&event_mutex);
> +             put_online_cpus();
> +
>               event_test_stuff();
> +
> +             get_online_cpus();
> +             mutex_lock(&event_mutex);
>               ftrace_event_enable_disable(file, 0);
> +             mutex_unlock(&event_mutex);
> +             put_online_cpus();
>  
>               pr_cont("OK\n");
>       }
> 
> cheers
> 

Reply via email to