summaryrefslogtreecommitdiff
path: root/drivers/nvme
diff options
context:
space:
mode:
authorJames Smart <jsmart2021@gmail.com>2020-07-24 19:40:00 +0300
committerChristoph Hellwig <hch@lst.de>2020-07-29 08:45:20 +0300
commit34efa23234c8b55dd178bba2216ca9ae9b50e1c9 (patch)
tree5acd7696d553e6e96cfb6696320793914a1ef913 /drivers/nvme
parent237480760c5050e8e897846b93ba9ffdb6444301 (diff)
downloadlinux-34efa23234c8b55dd178bba2216ca9ae9b50e1c9.tar.xz
nvmet-fc: check successful reference in nvmet_fc_find_target_assoc
When searching for an association based on an association id, when there is a match, the code takes a reference. However, it is not validating that the reference taking was successful. Check the status of the reference. If unsuccessful, the device is being deleted and should be ignored. Signed-off-by: James Smart <jsmart2021@gmail.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme')
-rw-r--r--drivers/nvme/target/fc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
index 27fd3b5aa621..c15356b5e09f 100644
--- a/drivers/nvme/target/fc.c
+++ b/drivers/nvme/target/fc.c
@@ -1243,7 +1243,8 @@ nvmet_fc_find_target_assoc(struct nvmet_fc_tgtport *tgtport,
list_for_each_entry(assoc, &tgtport->assoc_list, a_list) {
if (association_id == assoc->association_id) {
ret = assoc;
- nvmet_fc_tgt_a_get(assoc);
+ if (!nvmet_fc_tgt_a_get(assoc))
+ ret = NULL;
break;
}
}