Re: [PATCH 1/2] v3.2-rc1-52e4c2a05-rt1 fix for compile break

Steven Rostedt
2011-11-14T20:57:44Z

On Mon, 2011-11-14 at 02:44 +0100, John Kacur wrote:
> kernel/rcutorture.c:492: error: ‘synchronize_rcu_bh’ undeclared here (not in a function)
>
> In CONFIG_PREEMPT_RT_FULL
> doesn't cover function pointer assignment unless we remove the brackets.

John,

Please write better change logs. Do not assume that people are looking
at the patch while looking at the logs. I mostly read change logs as
"git log" which doesn't include the changes, and most other developers
do this too. The above sentence does not make any real sense.

Something like:

synchronize_rcu_bh() is not just called as a normal function, but can
also be referenced as a function pointer. When CONFIG_PREEMPT_RT_FULL is
enabled, synchronize_rcu_bh() is defined as synchronize_rcu(), but needs
to be defined without the parenthesis because the compiler will complain
when synchronize_rcu_bh is referenced as a function pointer and not a
function.

-- Steve

>
> Compile-tested.
>
> Signed-off-by: John Kacur <jkacur@redhat.com>
> ---
> include/linux/rcutree.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
> index 800b840..6e503a3 100644
> --- a/include/linux/rcutree.h
> +++ b/include/linux/rcutree.h
> @@ -60,7 +60,7 @@ static inline void exit_rcu(void)
> #ifndef CONFIG_PREEMPT_RT_FULL
> extern void synchronize_rcu_bh(void);
> #else
> -# define synchronize_rcu_bh() synchronize_rcu()
> +# define synchronize_rcu_bh synchronize_rcu
> #endif
> extern void synchronize_sched_expedited(void);
> extern void synchronize_rcu_expedited(void);