|
@@ -2614,6 +2614,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
|
|
|
port_id_t wrap, nxt_d_id;
|
|
|
struct qla_hw_data *ha = vha->hw;
|
|
|
struct scsi_qla_host *vp, *base_vha = pci_get_drvdata(ha->pdev);
|
|
|
+ struct scsi_qla_host *tvp;
|
|
|
|
|
|
rval = QLA_SUCCESS;
|
|
|
|
|
@@ -2713,7 +2714,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
|
|
|
/* Bypass virtual ports of the same host. */
|
|
|
found = 0;
|
|
|
if (ha->num_vhosts) {
|
|
|
- list_for_each_entry(vp, &ha->vp_list, list) {
|
|
|
+ list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
|
|
|
if (new_fcport->d_id.b24 == vp->d_id.b24) {
|
|
|
found = 1;
|
|
|
break;
|
|
@@ -2836,6 +2837,7 @@ qla2x00_find_new_loop_id(scsi_qla_host_t *vha, fc_port_t *dev)
|
|
|
uint16_t first_loop_id;
|
|
|
struct qla_hw_data *ha = vha->hw;
|
|
|
struct scsi_qla_host *vp;
|
|
|
+ struct scsi_qla_host *tvp;
|
|
|
|
|
|
rval = QLA_SUCCESS;
|
|
|
|
|
@@ -2860,7 +2862,7 @@ qla2x00_find_new_loop_id(scsi_qla_host_t *vha, fc_port_t *dev)
|
|
|
/* Check for loop ID being already in use. */
|
|
|
found = 0;
|
|
|
fcport = NULL;
|
|
|
- list_for_each_entry(vp, &ha->vp_list, list) {
|
|
|
+ list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
|
|
|
list_for_each_entry(fcport, &vp->vp_fcports, list) {
|
|
|
if (fcport->loop_id == dev->loop_id &&
|
|
|
fcport != dev) {
|
|
@@ -3295,6 +3297,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
|
|
|
uint8_t status = 0;
|
|
|
struct qla_hw_data *ha = vha->hw;
|
|
|
struct scsi_qla_host *vp;
|
|
|
+ struct scsi_qla_host *tvp;
|
|
|
struct req_que *req = ha->req_q_map[0];
|
|
|
|
|
|
if (vha->flags.online) {
|
|
@@ -3310,7 +3313,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
|
|
|
if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
|
|
|
atomic_set(&vha->loop_state, LOOP_DOWN);
|
|
|
qla2x00_mark_all_devices_lost(vha, 0);
|
|
|
- list_for_each_entry(vp, &ha->vp_list, list)
|
|
|
+ list_for_each_entry_safe(vp, tvp, &ha->vp_list, list)
|
|
|
qla2x00_mark_all_devices_lost(vp, 0);
|
|
|
} else {
|
|
|
if (!atomic_read(&vha->loop_down_timer))
|
|
@@ -3407,7 +3410,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
|
|
|
DEBUG(printk(KERN_INFO
|
|
|
"qla2x00_abort_isp(%ld): succeeded.\n",
|
|
|
vha->host_no));
|
|
|
- list_for_each_entry(vp, &ha->vp_list, list) {
|
|
|
+ list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
|
|
|
if (vp->vp_idx)
|
|
|
qla2x00_vp_abort_isp(vp);
|
|
|
}
|