... 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

Reply via email to