summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Smart <jsmart2021@gmail.com>2017-05-06 01:13:15 +0200
committerJens Axboe <axboe@fb.com>2017-05-20 18:11:34 +0200
commit85e6a6adf8de7f992e01d2c3c59d9875d658b276 (patch)
tree976bd6605e25f8f874837b5803b31aa4333cb566
parentnvme-fc: correct port role bits (diff)
downloadlinux-85e6a6adf8de7f992e01d2c3c59d9875d658b276.tar.xz
linux-85e6a6adf8de7f992e01d2c3c59d9875d658b276.zip
nvme-fc: require target or discovery role for fc-nvme targets
In order to create an association, the remoteport must be serving either a target role or a discovery role. Signed-off-by: James Smart <james.smart@broadcom.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--drivers/nvme/host/fc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 70e689bf1cad..912d457150d5 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2720,6 +2720,12 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
unsigned long flags;
int ret, idx;
+ if (!(rport->remoteport.port_role &
+ (FC_PORT_ROLE_NVME_DISCOVERY | FC_PORT_ROLE_NVME_TARGET))) {
+ ret = -EBADR;
+ goto out_fail;
+ }
+
ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
if (!ctrl) {
ret = -ENOMEM;