Subject: Re: linux-next: Tree for Apr 17 (rcu)

From: "Paul E. McKenney" <[email-masked]>
Date: Tue, 17 Apr 2012 09:32:32 -0700

On Tue, Apr 17, 2012 at 11:57:24AM -0700, Randy Dunlap wrote:
> On 04/16/2012 09:42 PM, Stephen Rothwell wrote:
> 
> > Hi all,
> > 
> > Changes since 20120416:
> > 
> > The rcu tree lost its build failure.
> 
> 
> ERROR: "rcu_read_lock_nesting" [net/sctp/sctp.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/rds/rds.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/phonet/phonet.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/openvswitch/openvswitch.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/netfilter/xt_TCPMSS.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/netfilter/nfnetlink.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/netfilter/nf_conntrack.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/netfilter/ipset/ip_set.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/llc/llc2.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/l2tp/l2tp_ip.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/l2tp/l2tp_core.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/key/af_key.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/ipv4/ipip.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/decnet/decnet.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/core/netprio_cgroup.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/can/can.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/can/can-bcm.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/bridge/bridge.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/bluetooth/bluetooth.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/batman-adv/batman-adv.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [net/atm/atm.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [fs/gfs2/gfs2.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [drivers/net/vmxnet3/vmxnet3.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [drivers/input/joydev.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [drivers/char/tpm/tpm.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [drivers/char/ipmi/ipmi_msghandler.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [block/cfq-iosched.ko] undefined!
> ERROR: "rcu_read_lock_nesting" [block/blk-cgroup.ko] undefined!
> 
> on i386.
> 
> Full randconfig file is attached.

Sigh!  I failed to add the exports.  Please see the following
not-yet-tested patch.

							Thanx, Paul

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

rcu: Add exports for per-CPU variables used for inlining

The new rcu_read_lock_nesting and rcu_read_unlock_special per-CPU
variables need to be accessible from modules to allow rcu_read_lock()
and rcu_read_unlock() to continue to be used from modules.  This
commit therefore adds the needed EXPORT_PER_CPU_SYMBOL_GPL()s.

Reported-by: Paul Gortmaker <[email-masked]>
Reported-by: Randy Dunlap <[email-masked]>
Signed-off-by: Paul E. McKenney <[email-masked]>
Signed-off-by: Paul E. McKenney <[email-masked]>

diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
index d52c68e..ef83774 100644
--- a/kernel/rcupdate.c
+++ b/kernel/rcupdate.c
@@ -53,7 +53,9 @@
 
 #ifdef CONFIG_PREEMPT_RCU
 DEFINE_PER_CPU(int, rcu_read_lock_nesting);
+EXPORT_PER_CPU_SYMBOL_GPL(rcu_read_lock_nesting);
 DEFINE_PER_CPU(int, rcu_read_unlock_special);
+EXPORT_PER_CPU_SYMBOL_GPL(rcu_read_unlock_special);
 #ifdef CONFIG_PROVE_RCU
 DEFINE_PER_CPU(struct task_struct *, rcu_current_task);
 #endif /* #ifdef CONFIG_PROVE_RCU */