... when resources are not available.
Signed-off-by: Felipe Contreras <[email protected]>
---
drivers/dsp/bridge/pmgr/dev.c | 22 ++++++++++++----------
1 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/dsp/bridge/pmgr/dev.c b/drivers/dsp/bridge/pmgr/dev.c
index c85a4fa..4ba8197 100644
--- a/drivers/dsp/bridge/pmgr/dev.c
+++ b/drivers/dsp/bridge/pmgr/dev.c
@@ -149,9 +149,11 @@ dsp_status dev_create_device(OUT struct dev_object
**phDevObject,
status = drv_request_bridge_res_dsp((void *)&host_res);
- if (DSP_FAILED(status))
+ if (DSP_FAILED(status)) {
dev_dbg(bridge, "%s: Failed to reserve bridge resources\n",
__func__);
+ goto leave;
+ }
/* Get the WMD interface functions */
bridge_drv_entry(&drv_fxns, driver_file_name);
@@ -256,20 +258,20 @@ dsp_status dev_create_device(OUT struct dev_object
**phDevObject,
else
INIT_LIST_HEAD(&dev_obj->proc_list->head);
}
+leave:
/* If all went well, return a handle to the dev object;
* else, cleanup and return NULL in the OUT parameter. */
if (DSP_SUCCEEDED(status)) {
*phDevObject = dev_obj;
} else {
- kfree(dev_obj->proc_list);
-
- if (dev_obj && dev_obj->cod_mgr)
- cod_delete(dev_obj->cod_mgr);
-
- if (dev_obj && dev_obj->dmm_mgr)
- dmm_destroy(dev_obj->dmm_mgr);
-
- kfree(dev_obj);
+ if (dev_obj) {
+ kfree(dev_obj->proc_list);
+ if (dev_obj->cod_mgr)
+ cod_delete(dev_obj->cod_mgr);
+ if (dev_obj->dmm_mgr)
+ dmm_destroy(dev_obj->dmm_mgr);
+ kfree(dev_obj);
+ }
*phDevObject = NULL;
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html