Re: linux-next: Tree for Jun 7 (fs / block / rcu)

Paul E. McKenney
2012-06-08T04:08:01Z

On Thu, Jun 07, 2012 at 11:31:07PM +0100, Mark Brown wrote:
> On Thu, Jun 07, 2012 at 01:00:07PM -0700, David Brown wrote:
> > On Thu, Jun 07, 2012 at 09:58:07AM -0700, Randy Dunlap wrote:
>
> > net/built-in.o:/home/davidb/upstream/kdev/kernel/include/linux/rcupdate.h:312: more undefined references to `rcu_is_cpu_idle' follow
>
> This is because rcu_is_cpu_idle() is only defined if PROVE_RCU but it's
> used in a bunch of other cases.

The following should clear it up, please accept my apologies for the
hassle.

Thanx, Paul

------------------------------------------------------------------------

rcu: Fix rcu_is_cpu_idle() #ifdef in TINY_RCU

The rcu_is_cpu_idle() function is used if CONFIG_DEBUG_LOCK_ALLOC,
but TINY_RCU defines it only when CONFIG_PROVE_RCU. This causes
build failures when CONFIG_DEBUG_LOCK_ALLOC=y but CONFIG_PROVE_RCU=n.
This commit therefore adjusts the #ifdefs for rcu_is_cpu_idle() so
that it is defined when CONFIG_DEBUG_LOCK_ALLOC=y.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c
index 37a5444..547b1fe 100644
--- a/kernel/rcutiny.c
+++ b/kernel/rcutiny.c
@@ -172,7 +172,7 @@ void rcu_irq_enter(void)
local_irq_restore(flags);
}

-#ifdef CONFIG_PROVE_RCU
+#ifdef CONFIG_DEBUG_LOCK_ALLOC

/*
* Test whether RCU thinks that the current CPU is idle.
@@ -183,7 +183,7 @@ int rcu_is_cpu_idle(void)
}
EXPORT_SYMBOL(rcu_is_cpu_idle);

-#endif /* #ifdef CONFIG_PROVE_RCU */
+#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */

/*
* Test whether the current CPU was interrupted from idle. Nested