Commit 8867048b authored by Chad Dupuis's avatar Chad Dupuis Committed by James Bottomley

[SCSI] qla2xxx: Add qla2x00_free_fcports() function

This function was added to encapsulate freeing the memory for all the fcports
associated with a particular vha.  Also added a call to qla2x00_free_fcports()
to qla2x00_free_device() to free the memory for all the fcports associated with
a vha during device removal.
Signed-off-by: default avatarGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 14e303d9
...@@ -1827,7 +1827,6 @@ static int ...@@ -1827,7 +1827,6 @@ static int
qla24xx_vport_delete(struct fc_vport *fc_vport) qla24xx_vport_delete(struct fc_vport *fc_vport)
{ {
scsi_qla_host_t *vha = fc_vport->dd_data; scsi_qla_host_t *vha = fc_vport->dd_data;
fc_port_t *fcport, *tfcport;
struct qla_hw_data *ha = vha->hw; struct qla_hw_data *ha = vha->hw;
uint16_t id = vha->vp_idx; uint16_t id = vha->vp_idx;
...@@ -1841,11 +1840,7 @@ qla24xx_vport_delete(struct fc_vport *fc_vport) ...@@ -1841,11 +1840,7 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
scsi_remove_host(vha->host); scsi_remove_host(vha->host);
list_for_each_entry_safe(fcport, tfcport, &vha->vp_fcports, list) { qla2x00_free_fcports(vha);
list_del(&fcport->list);
kfree(fcport);
fcport = NULL;
}
qla24xx_deallocate_vp_id(vha); qla24xx_deallocate_vp_id(vha);
......
...@@ -122,6 +122,7 @@ extern struct scsi_qla_host *qla2x00_create_host(struct scsi_host_template *, ...@@ -122,6 +122,7 @@ extern struct scsi_qla_host *qla2x00_create_host(struct scsi_host_template *,
extern void qla2x00_free_host(struct scsi_qla_host *); extern void qla2x00_free_host(struct scsi_qla_host *);
extern void qla2x00_relogin(struct scsi_qla_host *); extern void qla2x00_relogin(struct scsi_qla_host *);
extern void qla2x00_do_work(struct scsi_qla_host *); extern void qla2x00_do_work(struct scsi_qla_host *);
extern void qla2x00_free_fcports(struct scsi_qla_host *);
/* /*
* Global Functions in qla_mid.c source file. * Global Functions in qla_mid.c source file.
......
...@@ -2487,11 +2487,24 @@ qla2x00_free_device(scsi_qla_host_t *vha) ...@@ -2487,11 +2487,24 @@ qla2x00_free_device(scsi_qla_host_t *vha)
qla2x00_free_irqs(vha); qla2x00_free_irqs(vha);
qla2x00_free_fcports(vha);
qla2x00_mem_free(ha); qla2x00_mem_free(ha);
qla2x00_free_queues(ha); qla2x00_free_queues(ha);
} }
void qla2x00_free_fcports(struct scsi_qla_host *vha)
{
fc_port_t *fcport, *tfcport;
list_for_each_entry_safe(fcport, tfcport, &vha->vp_fcports, list) {
list_del(&fcport->list);
kfree(fcport);
fcport = NULL;
}
}
static inline void static inline void
qla2x00_schedule_rport_del(struct scsi_qla_host *vha, fc_port_t *fcport, qla2x00_schedule_rport_del(struct scsi_qla_host *vha, fc_port_t *fcport,
int defer) int defer)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment