summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c6
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c14
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();