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 "
                    "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;
                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 "
                    "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) {