From: Leon Romanovsky <leon@kernel.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: haris.iqbal@cloud.ionos.com, linux-block@vger.kernel.org,
linux-rdma@vger.kernel.org, danil.kipnis@cloud.ionos.com,
jinpu.wang@cloud.ionos.com, dledford@redhat.com,
kernel test robot <rong.a.chen@intel.com>
Subject: Re: [PATCH] Delay the initialization of rnbd_server module to late_initcall level
Date: Wed, 17 Jun 2020 22:07:56 +0300 [thread overview]
Message-ID: <20200617190756.GA2721989@unreal> (raw)
In-Reply-To: <20200617182046.GI6578@ziepe.ca>
On Wed, Jun 17, 2020 at 03:20:46PM -0300, Jason Gunthorpe wrote:
> On Wed, Jun 17, 2020 at 02:28:11PM +0300, Leon Romanovsky wrote:
> > On Wed, Jun 17, 2020 at 04:07:32PM +0530, haris.iqbal@cloud.ionos.com wrote:
> > > From: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
> > >
> > > Fixes: 2de6c8de192b ("block/rnbd: server: main functionality")
> > > Reported-by: kernel test robot <rong.a.chen@intel.com>
> > > Signed-off-by: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
> > >
> > > The rnbd_server module's communication manager initialization depends on the
> > > registration of the "network namespace subsystem" of the RDMA CM agent module.
> > > As such, when the kernel is configured to load the rnbd_server and the RDMA
> > > cma module during initialization; and if the rnbd_server module is initialized
> > > before RDMA cma module, a null ptr dereference occurs during the RDMA bind
> > > operation.
> > > This patch delays the initialization of the rnbd_server module to the
> > > late_initcall level, since RDMA cma module uses module_init which puts it into
> > > the device_initcall level.
> > > drivers/block/rnbd/rnbd-srv.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c
> > > index 86e61523907b..213df05e5994 100644
> > > +++ b/drivers/block/rnbd/rnbd-srv.c
> > > @@ -840,5 +840,5 @@ static void __exit rnbd_srv_cleanup_module(void)
> > > rnbd_srv_destroy_sysfs_files();
> > > }
> > >
> > > -module_init(rnbd_srv_init_module);
> > > +late_initcall(rnbd_srv_init_module);
> >
> > I don't think that this is correct change. Somehow nvme-rdma works:
> > module_init(nvme_rdma_init_module);
> > -> nvme_rdma_init_module
> > -> nvmf_register_transport(&nvme_rdma_transport);
> > -> nvme_rdma_create_ctrl
> > -> nvme_rdma_setup_ctrl
> > -> nvme_rdma_configure_admin_queue
> > -> nvme_rdma_alloc_queue
> > -> rdma_create_id
>
> If it does work, it is by luck.
I didn't check every ULP, but it seems that all ULPs use the same
module_init.
>
> Keep in mind all this only matters for kernels without modules.
Can it be related to the fact that other ULPs call to ib_register_client()
before calling to rdma-cm? RNBD does not have such call.
>
> Maybe cma should be upgraded to subsystem_init ? That is a bit tricky
> too as it needs the ib_client stuff working.
It can work, but makes me wonder if it is last change in this area,
every time we touch *_initcall(), we break something else.
I'm not proposing this, but just loudly wondering, do we really need rdma-cm
as a separate module? Can we bring it to be part of ib_core?
Thanks
>
> Jason
next prev parent reply other threads:[~2020-06-17 19:08 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-17 10:37 [PATCH] Delay the initialization of rnbd_server module to late_initcall level haris.iqbal
2020-06-17 10:57 ` Jinpu Wang
2020-06-17 11:28 ` Leon Romanovsky
2020-06-17 18:20 ` Jason Gunthorpe
2020-06-17 19:07 ` Leon Romanovsky [this message]
2020-06-17 19:26 ` Jason Gunthorpe
2020-06-18 1:45 ` Haris Iqbal
2020-06-18 9:14 ` Haris Iqbal
2020-06-23 9:50 ` Haris Iqbal
2020-06-23 12:17 ` Jason Gunthorpe
2020-06-23 13:45 ` Haris Iqbal
2020-06-23 14:24 ` Jason Gunthorpe
2020-06-23 11:35 ` Haris Iqbal
2020-06-23 17:23 ` Jason Gunthorpe
2020-08-04 13:37 ` [PATCH v2] RDMA/rtrs-srv: Incorporate ib_register_client into rtrs server init Md Haris Iqbal
2020-08-05 5:57 ` Leon Romanovsky
2020-08-05 7:50 ` Haris Iqbal
2020-08-05 9:04 ` Leon Romanovsky
2020-08-05 11:09 ` Haris Iqbal
2020-08-05 13:12 ` Leon Romanovsky
2020-08-05 13:53 ` Haris Iqbal
2020-08-05 14:55 ` Leon Romanovsky
2020-08-05 15:27 ` Haris Iqbal
2020-08-05 9:09 ` Danil Kipnis
2020-08-05 9:16 ` Leon Romanovsky
2020-08-05 11:18 ` Danil Kipnis
2020-08-05 13:09 ` Leon Romanovsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200617190756.GA2721989@unreal \
--to=leon@kernel.org \
--cc=danil.kipnis@cloud.ionos.com \
--cc=dledford@redhat.com \
--cc=haris.iqbal@cloud.ionos.com \
--cc=jgg@ziepe.ca \
--cc=jinpu.wang@cloud.ionos.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=rong.a.chen@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.