Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-microblaze.git] / drivers / scsi / qla2xxx / qla_attr.c
index 6b7b390..30bafd9 100644 (file)
@@ -382,7 +382,7 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
                ha->optrom_region_size = size;
 
                ha->optrom_state = QLA_SREADING;
-               ha->optrom_buffer = vmalloc(ha->optrom_region_size);
+               ha->optrom_buffer = vzalloc(ha->optrom_region_size);
                if (ha->optrom_buffer == NULL) {
                        ql_log(ql_log_warn, vha, 0x7062,
                            "Unable to allocate memory for optrom retrieval "
@@ -404,7 +404,6 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
                    "Reading flash region -- 0x%x/0x%x.\n",
                    ha->optrom_region_start, ha->optrom_region_size);
 
-               memset(ha->optrom_buffer, 0, ha->optrom_region_size);
                ha->isp_ops->read_optrom(vha, ha->optrom_buffer,
                    ha->optrom_region_start, ha->optrom_region_size);
                break;
@@ -457,7 +456,7 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
                ha->optrom_region_size = size;
 
                ha->optrom_state = QLA_SWRITING;
-               ha->optrom_buffer = vmalloc(ha->optrom_region_size);
+               ha->optrom_buffer = vzalloc(ha->optrom_region_size);
                if (ha->optrom_buffer == NULL) {
                        ql_log(ql_log_warn, vha, 0x7066,
                            "Unable to allocate memory for optrom update "
@@ -472,7 +471,6 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
                    "Staging flash region write -- 0x%x/0x%x.\n",
                    ha->optrom_region_start, ha->optrom_region_size);
 
-               memset(ha->optrom_buffer, 0, ha->optrom_region_size);
                break;
        case 3:
                if (ha->optrom_state != QLA_SWRITING) {
@@ -726,7 +724,8 @@ qla2x00_sysfs_write_reset(struct file *filp, struct kobject *kobj,
                        break;
                } else {
                        /* Make sure FC side is not in reset */
-                       qla2x00_wait_for_hba_online(vha);
+                       WARN_ON_ONCE(qla2x00_wait_for_hba_online(vha) !=
+                                    QLA_SUCCESS);
 
                        /* Issue MPI reset */
                        scsi_block_requests(vha->host);
@@ -1126,7 +1125,8 @@ qla2x00_pci_info_show(struct device *dev, struct device_attribute *attr,
        char pci_info[30];
 
        return scnprintf(buf, PAGE_SIZE, "%s\n",
-           vha->hw->isp_ops->pci_info_str(vha, pci_info));
+                        vha->hw->isp_ops->pci_info_str(vha, pci_info,
+                                                       sizeof(pci_info)));
 }
 
 static ssize_t
@@ -2920,6 +2920,8 @@ qla24xx_vport_delete(struct fc_vport *fc_vport)
        struct qla_hw_data *ha = vha->hw;
        uint16_t id = vha->vp_idx;
 
+       set_bit(VPORT_DELETE, &vha->dpc_flags);
+
        while (test_bit(LOOP_RESYNC_ACTIVE, &vha->dpc_flags) ||
            test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags))
                msleep(1000);