nvmet-fc: do not tack refs on tgtports from assoc
authorDaniel Wagner <dwagner@suse.de>
Wed, 31 Jan 2024 08:51:08 +0000 (09:51 +0100)
committerKeith Busch <kbusch@kernel.org>
Thu, 1 Feb 2024 15:44:51 +0000 (07:44 -0800)
The association life time is tied to the life time of the target port.
That means we should not take extra a refcount when creating a
association.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/fc.c

index 849d9b17c60add439cf26742b3b5ba03a9ce6556..fe3246024836e293149fd036ee28a402e828184d 100644 (file)
@@ -1107,12 +1107,9 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle)
        if (idx < 0)
                goto out_free_assoc;
 
-       if (!nvmet_fc_tgtport_get(tgtport))
-               goto out_ida;
-
        assoc->hostport = nvmet_fc_alloc_hostport(tgtport, hosthandle);
        if (IS_ERR(assoc->hostport))
-               goto out_put;
+               goto out_ida;
 
        assoc->tgtport = tgtport;
        assoc->a_id = idx;
@@ -1142,8 +1139,6 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle)
 
        return assoc;
 
-out_put:
-       nvmet_fc_tgtport_put(tgtport);
 out_ida:
        ida_free(&tgtport->assoc_cnt, idx);
 out_free_assoc:
@@ -1180,7 +1175,6 @@ nvmet_fc_target_assoc_free(struct kref *ref)
        dev_info(tgtport->dev,
                "{%d:%d} Association freed\n",
                tgtport->fc_target_port.port_num, assoc->a_id);
-       nvmet_fc_tgtport_put(tgtport);
        kfree(assoc);
 }