diff options
author | James Smart <jsmart2021@gmail.com> | 2017-05-06 01:13:15 +0200 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-05-20 18:11:34 +0200 |
commit | 85e6a6adf8de7f992e01d2c3c59d9875d658b276 (patch) | |
tree | 976bd6605e25f8f874837b5803b31aa4333cb566 | |
parent | nvme-fc: correct port role bits (diff) | |
download | linux-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.c | 6 |
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; |