On Thu, Dec 07, 2017 at 12:49:57AM +0900, Namhyung Kim wrote:

> So, are you ok with this?

yeah, that should work.

> diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
> index 1b2be63c8528..ee0ba22d3993 100644
> --- a/kernel/events/callchain.c
> +++ b/kernel/events/callchain.c
> @@ -137,8 +137,11 @@ int get_callchain_buffers(int event_max_stack)
>  
>         err = alloc_callchain_buffers();
>  exit:
> -       if (err)
> -               atomic_dec(&nr_callchain_events);
> +       if (err) {
> +               /* might race with put_callchain_buffers() */
> +               if (atomic_dec_and_test(&nr_callchain_events))
> +                       release_callchain_buffers();
> +       }
>  
>         mutex_unlock(&callchain_mutex);
>  

Reply via email to