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: Daniel Wagner <wagi@kernel.org> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
d6c40d87e7
commit
b999efc8cf
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue