Re: [v2] locking/percpu-rwsem: Optimize readers and reduce global impact

From: Peter Zijlstra
Date: Wed Aug 31 2016 - 04:10:04 EST


On Tue, Aug 30, 2016 at 10:21:02PM -0700, Guenter Roeck wrote:
> Peter,
>
> The call to rcu_sync_is_idle() causes the following build error when building
> x86_64:allmodconfig.
>
> ERROR: "rcu_sync_lockdep_assert" [kernel/locking/locktorture.ko] undefined!
> ERROR: "rcu_sync_lockdep_assert" [fs/ext4/ext4.ko] undefined!
>
> I think this was also reported by the 0-day build bot.
>
> The simple fix would of course be to export rcu_sync_lockdep_assert. Before I
> apply that change to the Android code (where the patch has been aplied and
> the problem is seen) - do you by any chance have a better solution in mind ?

Nope, that's exactly what Ingo did when he ran into this. If you look at
commit 80127a39681b ("locking/percpu-rwsem: Optimize readers and reduce
global impact"), you'll notice the last hunk:


diff --git a/kernel/rcu/sync.c b/kernel/rcu/sync.c
index be922c9f3d37..198473d90f81 100644
--- a/kernel/rcu/sync.c
+++ b/kernel/rcu/sync.c
@@ -68,6 +68,8 @@ void rcu_sync_lockdep_assert(struct rcu_sync *rsp)
RCU_LOCKDEP_WARN(!gp_ops[rsp->gp_type].held(),
"suspicious rcu_sync_is_idle() usage");
}
+
+EXPORT_SYMBOL_GPL(rcu_sync_lockdep_assert);
#endif

/**