Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf5a1631 authored by Anirban Chakraborty's avatar Anirban Chakraborty Committed by James Bottomley
Browse files

[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: default avatarAnirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 8a659571
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;