Commit b999efc8 authored by Daniel Wagner's avatar Daniel Wagner Committed by Christoph Hellwig
Browse files

nvmet-fcloop: remove nport from list on last user



The nport object has an association with the rport and lport object,
that means we can only remove an nport object from the global nport_list
after the last user of an rport or lport is gone.

Signed-off-by: default avatarDaniel Wagner <wagi@kernel.org>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent d6c40d87
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1019,9 +1019,15 @@ fcloop_lport_get(struct fcloop_lport *lport)
static void
fcloop_nport_put(struct fcloop_nport *nport)
{
	unsigned long flags;

	if (!refcount_dec_and_test(&nport->ref))
		return;

	spin_lock_irqsave(&fcloop_lock, flags);
	list_del(&nport->nport_list);
	spin_unlock_irqrestore(&fcloop_lock, flags);

	kfree(nport);
}

@@ -1414,8 +1420,6 @@ __unlink_remote_port(struct fcloop_nport *nport)
		nport->tport->remoteport = NULL;
	nport->rport = NULL;

	list_del(&nport->nport_list);

	return rport;
}