diff options
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c | 6 | ||||
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c | 14 |
2 files changed, 15 insertions, 5 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c index 28d017b3526d..77612a9f4d1a 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c @@ -3222,11 +3222,11 @@ gckKERNEL_AttachProcessEx( } else { + /* Clean up the process database. */ + gckKERNEL_DestroyProcessDB(Kernel, PID); + if (Kernel->dbCreated) { - /* Clean up the process database. */ - gcmkONERROR(gckKERNEL_DestroyProcessDB(Kernel, PID)); - /* Save the last know process ID. */ Kernel->db->lastProcessID = PID; } diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c index c0720a43b549..21937fb59122 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c @@ -1250,6 +1250,7 @@ gckKERNEL_DestroyProcessDB( gckKERNEL kernel = Kernel; gctUINT32 handle; gctUINT32 i; + gctBOOL deleteDB = gcvTRUE; gcmkHEADER_ARG("Kernel=0x%x ProcessID=%d", Kernel, ProcessID); @@ -1299,6 +1300,12 @@ gckKERNEL_DestroyProcessDB( /* Next next record. */ next = record->next; + if (record->kernel != Kernel) + { + deleteDB = gcvFALSE; + continue; + } + /* Dispatch on record type. */ switch (record->type) { @@ -1514,8 +1521,11 @@ gckKERNEL_DestroyProcessDB( } - /* Delete the database. */ - gcmkONERROR(gckKERNEL_DeleteDatabase(Kernel, database)); + if (deleteDB == gcvTRUE) + { + /* Delete the database. */ + gcmkONERROR(gckKERNEL_DeleteDatabase(Kernel, database)); + } /* Success. */ gcmkFOOTER_NO(); |