Commit eb1b1237 authored by adam radford's avatar adam radford Committed by James Bottomley

[SCSI] megaraid_sas: Fix failure gotos

Signed-off-by: default avatarAdam Radford <aradford@gmail.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 183ce896
...@@ -3424,7 +3424,6 @@ megasas_init_adapter_mfi(struct megasas_instance *instance) ...@@ -3424,7 +3424,6 @@ megasas_init_adapter_mfi(struct megasas_instance *instance)
megasas_free_cmds(instance); megasas_free_cmds(instance);
fail_alloc_cmds: fail_alloc_cmds:
iounmap(instance->reg_set);
return 1; return 1;
} }
...@@ -3494,7 +3493,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -3494,7 +3493,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
/* Get operational params, sge flags, send init cmd to controller */ /* Get operational params, sge flags, send init cmd to controller */
if (instance->instancet->init_adapter(instance)) if (instance->instancet->init_adapter(instance))
return -ENODEV; goto fail_init_adapter;
printk(KERN_ERR "megasas: INIT adapter done\n"); printk(KERN_ERR "megasas: INIT adapter done\n");
...@@ -3553,6 +3552,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -3553,6 +3552,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
MEGASAS_COMPLETION_TIMER_INTERVAL); MEGASAS_COMPLETION_TIMER_INTERVAL);
return 0; return 0;
fail_init_adapter:
fail_ready_state: fail_ready_state:
iounmap(instance->reg_set); iounmap(instance->reg_set);
...@@ -4105,10 +4105,13 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -4105,10 +4105,13 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
instance->instancet->disable_intr(instance->reg_set); instance->instancet->disable_intr(instance->reg_set);
free_irq(instance->msi_flag ? instance->msixentry.vector : free_irq(instance->msi_flag ? instance->msixentry.vector :
instance->pdev->irq, instance); instance->pdev->irq, instance);
fail_irq:
if (instance->msi_flag) if (instance->msi_flag)
pci_disable_msix(instance->pdev); pci_disable_msix(instance->pdev);
if (instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION)
fail_irq: megasas_release_fusion(instance);
else
megasas_release_mfi(instance);
fail_init_mfi: fail_init_mfi:
fail_alloc_dma_buf: fail_alloc_dma_buf:
if (instance->evt_detail) if (instance->evt_detail)
...@@ -4116,13 +4119,9 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -4116,13 +4119,9 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
instance->evt_detail, instance->evt_detail,
instance->evt_detail_h); instance->evt_detail_h);
if (instance->producer) { if (instance->producer)
pci_free_consistent(pdev, sizeof(u32), instance->producer, pci_free_consistent(pdev, sizeof(u32), instance->producer,
instance->producer_h); instance->producer_h);
megasas_release_mfi(instance);
} else {
megasas_release_fusion(instance);
}
if (instance->consumer) if (instance->consumer)
pci_free_consistent(pdev, sizeof(u32), instance->consumer, pci_free_consistent(pdev, sizeof(u32), instance->consumer,
instance->consumer_h); instance->consumer_h);
......
...@@ -984,13 +984,15 @@ megasas_init_adapter_fusion(struct megasas_instance *instance) ...@@ -984,13 +984,15 @@ megasas_init_adapter_fusion(struct megasas_instance *instance)
return 0; return 0;
fail_alloc_cmds:
fail_alloc_mfi_cmds:
fail_map_info: fail_map_info:
if (i == 1) if (i == 1)
dma_free_coherent(&instance->pdev->dev, fusion->map_sz, dma_free_coherent(&instance->pdev->dev, fusion->map_sz,
fusion->ld_map[0], fusion->ld_map_phys[0]); fusion->ld_map[0], fusion->ld_map_phys[0]);
fail_ioc_init: fail_ioc_init:
megasas_free_cmds_fusion(instance);
fail_alloc_cmds:
megasas_free_cmds(instance);
fail_alloc_mfi_cmds:
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment