Re: [PATCH 2/5] nvme: don't hold nvmf_transports_rwsem for more than transport lookups

From: Sagi Grimberg
Date: Thu May 31 2018 - 05:25:01 EST



diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 7ae732a77fe8..febf82639b40 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -957,16 +957,17 @@ nvmf_create_ctrl(struct device *dev, const char *buf, size_t count)
down_read(&nvmf_transports_rwsem);
ops = nvmf_lookup_transport(opts);
+ up_read(&nvmf_transports_rwsem);

And what protects us from the transport getting unregister right here
from anothet thread waiting to acquire nvmf_transports_rwsem?

I think having the module_get inside as well would protect against it.