|
@@ -2493,6 +2493,9 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
|
|
|
struct mgmt_controller_attrib *attribs;
|
|
|
struct be_dma_mem attribs_cmd;
|
|
|
|
|
|
+ if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
+ return -1;
|
|
|
+
|
|
|
memset(&attribs_cmd, 0, sizeof(struct be_dma_mem));
|
|
|
attribs_cmd.size = sizeof(struct be_cmd_resp_cntl_attribs);
|
|
|
attribs_cmd.va = pci_alloc_consistent(adapter->pdev, attribs_cmd.size,
|
|
@@ -2500,12 +2503,10 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
|
|
|
if (!attribs_cmd.va) {
|
|
|
dev_err(&adapter->pdev->dev,
|
|
|
"Memory allocation failure\n");
|
|
|
- return -ENOMEM;
|
|
|
+ status = -ENOMEM;
|
|
|
+ goto err;
|
|
|
}
|
|
|
|
|
|
- if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
- return -1;
|
|
|
-
|
|
|
wrb = wrb_from_mbox(adapter);
|
|
|
if (!wrb) {
|
|
|
status = -EBUSY;
|
|
@@ -2525,8 +2526,9 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
|
|
|
|
|
|
err:
|
|
|
mutex_unlock(&adapter->mbox_lock);
|
|
|
- pci_free_consistent(adapter->pdev, attribs_cmd.size, attribs_cmd.va,
|
|
|
- attribs_cmd.dma);
|
|
|
+ if (attribs_cmd.va)
|
|
|
+ pci_free_consistent(adapter->pdev, attribs_cmd.size,
|
|
|
+ attribs_cmd.va, attribs_cmd.dma);
|
|
|
return status;
|
|
|
}
|
|
|
|
|
@@ -2826,6 +2828,9 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
|
|
|
CMD_SUBSYSTEM_ETH))
|
|
|
return -EPERM;
|
|
|
|
|
|
+ if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
+ return -1;
|
|
|
+
|
|
|
memset(&cmd, 0, sizeof(struct be_dma_mem));
|
|
|
cmd.size = sizeof(struct be_cmd_resp_acpi_wol_magic_config_v1);
|
|
|
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size,
|
|
@@ -2833,12 +2838,10 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
|
|
|
if (!cmd.va) {
|
|
|
dev_err(&adapter->pdev->dev,
|
|
|
"Memory allocation failure\n");
|
|
|
- return -ENOMEM;
|
|
|
+ status = -ENOMEM;
|
|
|
+ goto err;
|
|
|
}
|
|
|
|
|
|
- if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
- return -1;
|
|
|
-
|
|
|
wrb = wrb_from_mbox(adapter);
|
|
|
if (!wrb) {
|
|
|
status = -EBUSY;
|
|
@@ -2869,7 +2872,8 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
|
|
|
}
|
|
|
err:
|
|
|
mutex_unlock(&adapter->mbox_lock);
|
|
|
- pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
|
|
|
+ if (cmd.va)
|
|
|
+ pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
|
|
|
return status;
|
|
|
|
|
|
}
|
|
@@ -3001,16 +3005,18 @@ int be_cmd_get_func_config(struct be_adapter *adapter)
|
|
|
int status;
|
|
|
struct be_dma_mem cmd;
|
|
|
|
|
|
+ if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
+ return -1;
|
|
|
+
|
|
|
memset(&cmd, 0, sizeof(struct be_dma_mem));
|
|
|
cmd.size = sizeof(struct be_cmd_resp_get_func_config);
|
|
|
cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size,
|
|
|
&cmd.dma);
|
|
|
if (!cmd.va) {
|
|
|
dev_err(&adapter->pdev->dev, "Memory alloc failure\n");
|
|
|
- return -ENOMEM;
|
|
|
+ status = -ENOMEM;
|
|
|
+ goto err;
|
|
|
}
|
|
|
- if (mutex_lock_interruptible(&adapter->mbox_lock))
|
|
|
- return -1;
|
|
|
|
|
|
wrb = wrb_from_mbox(adapter);
|
|
|
if (!wrb) {
|
|
@@ -3050,8 +3056,8 @@ int be_cmd_get_func_config(struct be_adapter *adapter)
|
|
|
}
|
|
|
err:
|
|
|
mutex_unlock(&adapter->mbox_lock);
|
|
|
- pci_free_consistent(adapter->pdev, cmd.size,
|
|
|
- cmd.va, cmd.dma);
|
|
|
+ if (cmd.va)
|
|
|
+ pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma);
|
|
|
return status;
|
|
|
}
|
|
|
|