Re: [PATCH] [RFC] sched: make DECLARE_COMPLETION_ONSTACK() work with clang

From: Arnd Bergmann
Date: Wed Feb 01 2017 - 11:38:22 EST


On Wed, Feb 1, 2017 at 5:34 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:

> diff --git a/include/linux/completion.h b/include/linux/completion.h
> index fa5d3efaba56..5d5aaae3af43 100644
> --- a/include/linux/completion.h
> +++ b/include/linux/completion.h
> @@ -31,7 +31,7 @@ struct completion {
> { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) }
>
> #define COMPLETION_INITIALIZER_ONSTACK(work) \
> - (*init_completion(&work))
> + ({ init_completion(&work); work; })
>
> /**
> * DECLARE_COMPLETION - declare and initialize a completion structure
> @@ -70,11 +70,10 @@ struct completion {
> * This inline function will initialize a dynamically created completion
> * structure.
> */
> -static inline struct completion *init_completion(struct completion *x)
> +static inline void init_completion(struct completion *x)
> {
> x->done = 0;
> init_waitqueue_head(&x->wait);
> - return x;
> }
>

I accidentally submitted the wrong patch, this is the revert of the
actual change.

Arnd