[SCSI] libfc: defer releasing master lport until complete fcoe interface cleanuped up
The fcoe controller has back references, therefore defer releasing master lport which gets freed along scsi_host_put and then free it once fcoe interface is fully cleaned. Signed-off-by: Vasu Dev <vasu.dev@intel.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Родитель
061446a159
Коммит
3cab4468fd
|
@ -472,6 +472,7 @@ static void fcoe_interface_cleanup(struct fcoe_interface *fcoe)
|
|||
/* Release the self-reference taken during fcoe_interface_create() */
|
||||
/* tear-down the FCoE controller */
|
||||
fcoe_ctlr_destroy(fip);
|
||||
scsi_host_put(fcoe->ctlr.lp->host);
|
||||
kfree(fcoe);
|
||||
dev_put(netdev);
|
||||
module_put(THIS_MODULE);
|
||||
|
@ -976,8 +977,12 @@ static void fcoe_if_destroy(struct fc_lport *lport)
|
|||
/* Free memory used by statistical counters */
|
||||
fc_lport_free_stats(lport);
|
||||
|
||||
/* Release the Scsi_Host */
|
||||
scsi_host_put(lport->host);
|
||||
/*
|
||||
* Release the Scsi_Host for vport but hold on to
|
||||
* master lport until it fcoe interface fully cleaned-up.
|
||||
*/
|
||||
if (lport->vport)
|
||||
scsi_host_put(lport->host);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче