[PATCH RFC tip/core/rcu 0/4] Forbid static SRCU use in modules

From: Paul E. McKenney
Date: Tue Apr 02 2019 - 10:28:23 EST


Hello!

This series prohibits use of DEFINE_SRCU() and DEFINE_STATIC_SRCU()
by loadable modules. The reason for this prohibition is the fact
that using these two macros within modules requires that the size of
the reserved region be increased, which is not something we want to
be doing all that often. Instead, loadable modules should define an
srcu_struct and invoke init_srcu_struct() from their module_init function
and cleanup_srcu_struct() from their module_exit function. Note that
modules using call_srcu() will also need to invoke srcu_barrier() from
their module_exit function.

This series consist of the following:

1. Dynamically allocate dax_srcu.

2. Dynamically allocate drm_unplug_srcu.

3. Dynamically allocate kfd_processes_srcu.

These build and have been subjected to 0day testing, but might also need
testing by someone having the requisite hardware.

Thanx, Paul

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

drivers/dax/super.c | 10 +++++-
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 5 +++
drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 -
drivers/gpu/drm/drm_drv.c | 8 ++++
include/linux/srcutree.h | 19 +++++++++--
kernel/rcu/rcuperf.c | 40 +++++++++++++++++++-----
kernel/rcu/rcutorture.c | 48 +++++++++++++++++++++--------
7 files changed, 105 insertions(+), 27 deletions(-)