diff options
| author | Sakthivel K <Sakthivel.SaravananKamalRaju@pmcs.com> | 2013-03-19 18:06:40 +0530 | 
|---|---|---|
| committer | James Bottomley <JBottomley@Parallels.com> | 2013-05-10 07:47:49 -0700 | 
| commit | 1c75a6796ea8b162863caf90b70d324ca481a181 (patch) | |
| tree | 0c5c3868d9e47ec6b46de1fb1a719af749b2162f /drivers/scsi/pm8001/pm8001_ctl.c | |
| parent | 54792dc2856e27d7c9d798589d45cabe1230990a (diff) | |
| download | olio-linux-3.10-1c75a6796ea8b162863caf90b70d324ca481a181.tar.xz olio-linux-3.10-1c75a6796ea8b162863caf90b70d324ca481a181.zip  | |
[SCSI] pm80xx: Firmware flash memory free fix, with addition of new memory region for it
Performing pci_free_consistent in tasklet had result in a core dump. So
allocated a new memory region for it. Fix for passing proper address
and operation in firmware flash update.
Signed-off-by: Sakthivel K <Sakthivel.SaravananKamalRaju@pmcs.com>
Signed-off-by: Anand Kumar S <AnandKumar.Santhanam@pmcs.com>
Acked-by: Jack Wang <jack_wang@usish.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/pm8001/pm8001_ctl.c')
| -rw-r--r-- | drivers/scsi/pm8001/pm8001_ctl.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c index ae2b1242d0a..d99f41c2ca1 100644 --- a/drivers/scsi/pm8001/pm8001_ctl.c +++ b/drivers/scsi/pm8001/pm8001_ctl.c @@ -400,10 +400,11 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)  		goto out;  	}  	payload = (struct pm8001_ioctl_payload *)ioctlbuffer; -	memcpy((u8 *)payload->func_specific, (u8 *)pm8001_ha->fw_image->data, +	memcpy((u8 *)&payload->func_specific, (u8 *)pm8001_ha->fw_image->data,  				pm8001_ha->fw_image->size);  	payload->length = pm8001_ha->fw_image->size;  	payload->id = 0; +	payload->minor_function = 0x1;  	pm8001_ha->nvmd_completion = &completion;  	ret = PM8001_CHIP_DISP->set_nvmd_req(pm8001_ha, payload);  	wait_for_completion(&completion); @@ -450,7 +451,7 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)  			payload->length = 1024*16;  			payload->id = 0;  			fwControl = -			      (struct fw_control_info *)payload->func_specific; +			      (struct fw_control_info *)&payload->func_specific;  			fwControl->len = IOCTL_BUF_SIZE;   /* IN */  			fwControl->size = partitionSize + HEADER_LEN;/* IN */  			fwControl->retcode = 0;/* OUT */  |