diff options
author | James Smart <jsmart2021@gmail.com> | 2020-07-24 09:40:00 -0700 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2020-07-29 07:45:20 +0200 |
commit | 34efa23234c8b55dd178bba2216ca9ae9b50e1c9 (patch) | |
tree | 5acd7696d553e6e96cfb6696320793914a1ef913 /drivers/nvme | |
parent | 237480760c5050e8e897846b93ba9ffdb6444301 (diff) | |
download | linux-34efa23234c8b55dd178bba2216ca9ae9b50e1c9.tar.bz2 |
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.c | 3 |
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; } } |