From: Omar Ramirez Luna <omar.rami...@ti.com>

There is no need to walk the process context list
on exit, remove all process instead without exception.

Signed-off-by: Omar Ramirez Luna <omar.rami...@ti.com>
---
 drivers/dsp/bridge/rmgr/drv_interface.c |   32 +++++-------------------------
 1 files changed, 6 insertions(+), 26 deletions(-)
 mode change 100755 => 100644 drivers/dsp/bridge/rmgr/drv_interface.c

diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c 
b/drivers/dsp/bridge/rmgr/drv_interface.c
old mode 100755
new mode 100644
index e937766..d17d3cf
--- a/drivers/dsp/bridge/rmgr/drv_interface.c
+++ b/drivers/dsp/bridge/rmgr/drv_interface.c
@@ -451,44 +451,24 @@ static int __devexit omap34xx_bridge_remove(struct 
platform_device *pdev)
        HANDLE       hDrvObject = NULL;
        struct PROCESS_CONTEXT  *pTmp = NULL;
        struct PROCESS_CONTEXT    *pCtxtclosed = NULL;
-       struct PROCESS_CONTEXT    *pCtxttraverse = NULL;
 
        GT_0trace(driverTrace, GT_ENTER, "-> driver_exit\n");
 
        dsp_status = CFG_GetObject((u32 *)&hDrvObject, REG_DRV_OBJECT);
+       if (DSP_FAILED(dsp_status))
+               goto func_cont;
        DRV_GetProcCtxtList(&pCtxtclosed, (struct DRV_OBJECT *)hDrvObject);
        while (pCtxtclosed != NULL) {
+               GT_1trace(driverTrace, GT_5CLASS, "***Cleanup of "
+                        "process***%d\n", pCtxtclosed->pid);
                DRV_RemoveAllResources(pCtxtclosed);
-               if (pCtxtclosed->hProcessor != NULL) {
-                       DRV_GetProcCtxtList(&pCtxttraverse,
-                                           (struct DRV_OBJECT *)hDrvObject);
-                       if (pCtxttraverse->next == NULL) {
-                               PROC_Detach(pCtxtclosed->hProcessor);
-                               goto func_cont;
-                       }
-                       if ((pCtxtclosed->pid == pCtxttraverse->pid) &&
-                          (pCtxttraverse->next != NULL)) {
-                               pCtxttraverse = pCtxttraverse->next;
-                       }
-                       while ((pCtxttraverse != NULL) &&
-                             (pCtxtclosed->hProcessor
-                             != pCtxttraverse->hProcessor)) {
-                               pCtxttraverse = pCtxttraverse->next;
-                               if ((pCtxttraverse != NULL) &&
-                                  (pCtxtclosed->pid == pCtxttraverse->pid)) {
-                                       pCtxttraverse = pCtxttraverse->next;
-                               }
-                       }
-                       if (pCtxttraverse == NULL)
-                               PROC_Detach(pCtxtclosed->hProcessor);
-               }
-func_cont:
+               PROC_Detach(pCtxtclosed->hProcessor);
                pTmp = pCtxtclosed->next;
                DRV_RemoveProcContext((struct DRV_OBJECT *)hDrvObject,
                                     pCtxtclosed, (void *)pCtxtclosed->pid);
                pCtxtclosed = pTmp;
        }
-
+func_cont:
        /* unregister the clock notifier */
 #ifdef CONFIG_BRIDGE_DVFS
        if (!clk_notifier_unregister(clk_handle, &iva_clk_notifier)) {
-- 
1.6.2.4

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to