diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-14 15:34:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-14 15:34:34 -0400 |
commit | c29c08b59875fe053471cf9eb66f8cfef39bc509 (patch) | |
tree | 00c9b1794483666eddccdd7302611e0cffb4c184 /drivers/scsi/pm8001/pm8001_hwi.c | |
parent | bbbfb910d14988963fbc0b3fc5fc460daf21bf24 (diff) | |
parent | 3c3e210877e89aa3bfbda22551876986c035c433 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (28 commits)
[SCSI] qla4xxx: fix compilation warning
[SCSI] make error handling more robust in the face of reservations
[SCSI] tgt: fix warning
[SCSI] drivers/message/fusion: Adjust confusing if indentation
[SCSI] Return NEEDS_RETRY for eh commands with status BUSY
[SCSI] ibmvfc: Driver version 1.0.9
[SCSI] ibmvfc: Fix terminate_rport_io
[SCSI] ibmvfc: Fix rport add/delete race resulting in oops
[SCSI] lpfc 8.3.16: Change LPFC driver version to 8.3.16
[SCSI] lpfc 8.3.16: FCoE Discovery and Failover Fixes
[SCSI] lpfc 8.3.16: SLI Additions, updates, and code cleanup
[SCSI] pm8001: introduce missing kfree
[SCSI] qla4xxx: Update driver version to 5.02.00-k3
[SCSI] qla4xxx: Added AER support for ISP82xx
[SCSI] qla4xxx: Handle outstanding mbx cmds on hung f/w scenarios
[SCSI] qla4xxx: updated mbx_sys_info struct to sync with FW 4.6.x
[SCSI] qla4xxx: clear AF_DPC_SCHEDULED flage when exit from do_dpc
[SCSI] qla4xxx: Stop firmware before doing init firmware.
[SCSI] qla4xxx: Use the correct request queue.
[SCSI] qla4xxx: set correct value in sess->recovery_tmo
...
Diffstat (limited to 'drivers/scsi/pm8001/pm8001_hwi.c')
-rw-r--r-- | drivers/scsi/pm8001/pm8001_hwi.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 58d1134935ef..9793aa6afb10 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c | |||
@@ -4199,8 +4199,10 @@ static int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha, | |||
4199 | circularQ = &pm8001_ha->inbnd_q_tbl[0]; | 4199 | circularQ = &pm8001_ha->inbnd_q_tbl[0]; |
4200 | memset(&nvmd_req, 0, sizeof(nvmd_req)); | 4200 | memset(&nvmd_req, 0, sizeof(nvmd_req)); |
4201 | rc = pm8001_tag_alloc(pm8001_ha, &tag); | 4201 | rc = pm8001_tag_alloc(pm8001_ha, &tag); |
4202 | if (rc) | 4202 | if (rc) { |
4203 | kfree(fw_control_context); | ||
4203 | return rc; | 4204 | return rc; |
4205 | } | ||
4204 | ccb = &pm8001_ha->ccb_info[tag]; | 4206 | ccb = &pm8001_ha->ccb_info[tag]; |
4205 | ccb->ccb_tag = tag; | 4207 | ccb->ccb_tag = tag; |
4206 | ccb->fw_control_context = fw_control_context; | 4208 | ccb->fw_control_context = fw_control_context; |
@@ -4276,8 +4278,10 @@ static int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha, | |||
4276 | ioctl_payload->length); | 4278 | ioctl_payload->length); |
4277 | memset(&nvmd_req, 0, sizeof(nvmd_req)); | 4279 | memset(&nvmd_req, 0, sizeof(nvmd_req)); |
4278 | rc = pm8001_tag_alloc(pm8001_ha, &tag); | 4280 | rc = pm8001_tag_alloc(pm8001_ha, &tag); |
4279 | if (rc) | 4281 | if (rc) { |
4282 | kfree(fw_control_context); | ||
4280 | return rc; | 4283 | return rc; |
4284 | } | ||
4281 | ccb = &pm8001_ha->ccb_info[tag]; | 4285 | ccb = &pm8001_ha->ccb_info[tag]; |
4282 | ccb->fw_control_context = fw_control_context; | 4286 | ccb->fw_control_context = fw_control_context; |
4283 | ccb->ccb_tag = tag; | 4287 | ccb->ccb_tag = tag; |
@@ -4387,6 +4391,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, | |||
4387 | fw_control->len, 0) != 0) { | 4391 | fw_control->len, 0) != 0) { |
4388 | PM8001_FAIL_DBG(pm8001_ha, | 4392 | PM8001_FAIL_DBG(pm8001_ha, |
4389 | pm8001_printk("Mem alloc failure\n")); | 4393 | pm8001_printk("Mem alloc failure\n")); |
4394 | kfree(fw_control_context); | ||
4390 | return -ENOMEM; | 4395 | return -ENOMEM; |
4391 | } | 4396 | } |
4392 | } | 4397 | } |
@@ -4401,8 +4406,10 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, | |||
4401 | fw_control_context->virtAddr = buffer; | 4406 | fw_control_context->virtAddr = buffer; |
4402 | fw_control_context->len = fw_control->len; | 4407 | fw_control_context->len = fw_control->len; |
4403 | rc = pm8001_tag_alloc(pm8001_ha, &tag); | 4408 | rc = pm8001_tag_alloc(pm8001_ha, &tag); |
4404 | if (rc) | 4409 | if (rc) { |
4410 | kfree(fw_control_context); | ||
4405 | return rc; | 4411 | return rc; |
4412 | } | ||
4406 | ccb = &pm8001_ha->ccb_info[tag]; | 4413 | ccb = &pm8001_ha->ccb_info[tag]; |
4407 | ccb->fw_control_context = fw_control_context; | 4414 | ccb->fw_control_context = fw_control_context; |
4408 | ccb->ccb_tag = tag; | 4415 | ccb->ccb_tag = tag; |