Message ID | 20190402142933.14547-1-paulmck@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Forbid static SRCU use in modules | expand |
On Tue, Apr 2, 2019 at 7:29 AM Paul E. McKenney <paulmck@linux.ibm.com> wrote: > > Having DEFINE_SRCU() or DEFINE_STATIC_SRCU() in a loadable module > requires that the size of the reserved region be increased, which is > not something we really want to be doing. This commit therefore removes > the DEFINE_STATIC_SRCU() from drivers/dax/super.c in favor of defining > dax_srcu as a simple srcu_struct, initializing it in dax_core_init(), > and cleaning it up in dax_core_exit(). > > Reported-by: kbuild test robot <lkp@intel.com> > Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com> Looks good to me. Reviewed-by: Dan Williams <dan.j.williams@intel.com>
On Wed, Apr 03, 2019 at 11:31:01AM -0700, Dan Williams wrote: > On Tue, Apr 2, 2019 at 7:29 AM Paul E. McKenney <paulmck@linux.ibm.com> wrote: > > > > Having DEFINE_SRCU() or DEFINE_STATIC_SRCU() in a loadable module > > requires that the size of the reserved region be increased, which is > > not something we really want to be doing. This commit therefore removes > > the DEFINE_STATIC_SRCU() from drivers/dax/super.c in favor of defining > > dax_srcu as a simple srcu_struct, initializing it in dax_core_init(), > > and cleaning it up in dax_core_exit(). > > > > Reported-by: kbuild test robot <lkp@intel.com> > > Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com> > > Looks good to me. > > Reviewed-by: Dan Williams <dan.j.williams@intel.com> Applied, thank you! Thanx, Paul
diff --git a/drivers/dax/super.c b/drivers/dax/super.c index 0a339b85133e..3b152db30c6b 100644 --- a/drivers/dax/super.c +++ b/drivers/dax/super.c @@ -25,7 +25,7 @@ #include "dax-private.h" static dev_t dax_devt; -DEFINE_STATIC_SRCU(dax_srcu); +static struct srcu_struct dax_srcu; static struct vfsmount *dax_mnt; static DEFINE_IDA(dax_minor_ida); static struct kmem_cache *dax_cache __read_mostly; @@ -665,6 +665,10 @@ static int __init dax_core_init(void) { int rc; + rc = init_srcu_struct(&dax_srcu); + if (rc) + goto err_srcu; + rc = dax_fs_init(); if (rc) return rc; @@ -678,10 +682,13 @@ static int __init dax_core_init(void) goto err_bus; return 0; + err_bus: unregister_chrdev_region(dax_devt, MINORMASK+1); err_chrdev: dax_fs_exit(); + cleanup_srcu_struct(&dax_srcu); +err_srcu: return 0; } @@ -690,6 +697,7 @@ static void __exit dax_core_exit(void) unregister_chrdev_region(dax_devt, MINORMASK+1); ida_destroy(&dax_minor_ida); dax_fs_exit(); + cleanup_srcu_struct(&dax_srcu); } MODULE_AUTHOR("Intel Corporation");
Having DEFINE_SRCU() or DEFINE_STATIC_SRCU() in a loadable module requires that the size of the reserved region be increased, which is not something we really want to be doing. This commit therefore removes the DEFINE_STATIC_SRCU() from drivers/dax/super.c in favor of defining dax_srcu as a simple srcu_struct, initializing it in dax_core_init(), and cleaning it up in dax_core_exit(). Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Vishal Verma <vishal.l.verma@intel.com> Cc: Keith Busch <keith.busch@intel.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: Tejun Heo <tj@kernel.org> Cc: <linux-nvdimm@lists.01.org> --- drivers/dax/super.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)