提交 cf5a1631 编写于 作者: A Anirban Chakraborty 提交者: James Bottomley

[SCSI] qla2xxx: Correct slab-error overwrite during vport creation and deletion.

The clearing of a vha's req_ques were overrunning during vport
creation.  During deletion, vport queues should be torn-down
after all cleanup has occurred.
Signed-off-by: NAnirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
上级 8a659571
...@@ -1265,13 +1265,6 @@ qla24xx_vport_delete(struct fc_vport *fc_vport) ...@@ -1265,13 +1265,6 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags)) test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags))
msleep(1000); msleep(1000);
if (ha->mqenable) {
if (qla25xx_delete_queues(vha, 0) != QLA_SUCCESS)
qla_printk(KERN_WARNING, ha,
"Queue delete failed.\n");
vha->req_ques[0] = ha->req_q_map[0]->id;
}
qla24xx_disable_vp(vha); qla24xx_disable_vp(vha);
fc_remove_host(vha->host); fc_remove_host(vha->host);
...@@ -1293,6 +1286,12 @@ qla24xx_vport_delete(struct fc_vport *fc_vport) ...@@ -1293,6 +1286,12 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
vha->host_no, vha->vp_idx, vha)); vha->host_no, vha->vp_idx, vha));
} }
if (ha->mqenable) {
if (qla25xx_delete_queues(vha, 0) != QLA_SUCCESS)
qla_printk(KERN_WARNING, ha,
"Queue delete failed.\n");
}
scsi_host_put(vha->host); scsi_host_put(vha->host);
qla_printk(KERN_INFO, ha, "vport %d deleted\n", id); qla_printk(KERN_INFO, ha, "vport %d deleted\n", id);
return 0; return 0;
......
...@@ -396,7 +396,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport) ...@@ -396,7 +396,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL); qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL);
memset(vha->req_ques, 0, sizeof(vha->req_ques) * QLA_MAX_HOST_QUES); memset(vha->req_ques, 0, sizeof(vha->req_ques));
vha->req_ques[0] = ha->req_q_map[0]->id; vha->req_ques[0] = ha->req_q_map[0]->id;
host->can_queue = ha->req_q_map[0]->length + 128; host->can_queue = ha->req_q_map[0]->length + 128;
host->this_id = 255; host->this_id = 255;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册