|
@@ -4199,8 +4199,10 @@ static int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
|
|
|
circularQ = &pm8001_ha->inbnd_q_tbl[0];
|
|
|
memset(&nvmd_req, 0, sizeof(nvmd_req));
|
|
|
rc = pm8001_tag_alloc(pm8001_ha, &tag);
|
|
|
- if (rc)
|
|
|
+ if (rc) {
|
|
|
+ kfree(fw_control_context);
|
|
|
return rc;
|
|
|
+ }
|
|
|
ccb = &pm8001_ha->ccb_info[tag];
|
|
|
ccb->ccb_tag = tag;
|
|
|
ccb->fw_control_context = fw_control_context;
|
|
@@ -4276,8 +4278,10 @@ static int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
|
|
|
ioctl_payload->length);
|
|
|
memset(&nvmd_req, 0, sizeof(nvmd_req));
|
|
|
rc = pm8001_tag_alloc(pm8001_ha, &tag);
|
|
|
- if (rc)
|
|
|
+ if (rc) {
|
|
|
+ kfree(fw_control_context);
|
|
|
return rc;
|
|
|
+ }
|
|
|
ccb = &pm8001_ha->ccb_info[tag];
|
|
|
ccb->fw_control_context = fw_control_context;
|
|
|
ccb->ccb_tag = tag;
|
|
@@ -4387,6 +4391,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
|
|
|
fw_control->len, 0) != 0) {
|
|
|
PM8001_FAIL_DBG(pm8001_ha,
|
|
|
pm8001_printk("Mem alloc failure\n"));
|
|
|
+ kfree(fw_control_context);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
}
|
|
@@ -4401,8 +4406,10 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
|
|
|
fw_control_context->virtAddr = buffer;
|
|
|
fw_control_context->len = fw_control->len;
|
|
|
rc = pm8001_tag_alloc(pm8001_ha, &tag);
|
|
|
- if (rc)
|
|
|
+ if (rc) {
|
|
|
+ kfree(fw_control_context);
|
|
|
return rc;
|
|
|
+ }
|
|
|
ccb = &pm8001_ha->ccb_info[tag];
|
|
|
ccb->fw_control_context = fw_control_context;
|
|
|
ccb->ccb_tag = tag;
|