forked from Minki/linux
[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: Anirban Chakraborty <anirban.chakraborty@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
8a659571ec
commit
cf5a163127
@ -1265,13 +1265,6 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
|
||||
test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags))
|
||||
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);
|
||||
|
||||
fc_remove_host(vha->host);
|
||||
@ -1293,6 +1286,12 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
|
||||
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);
|
||||
qla_printk(KERN_INFO, ha, "vport %d deleted\n", id);
|
||||
return 0;
|
||||
|
@ -396,7 +396,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
|
||||
|
||||
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;
|
||||
host->can_queue = ha->req_q_map[0]->length + 128;
|
||||
host->this_id = 255;
|
||||
|
Loading…
Reference in New Issue
Block a user