when the app is killed, the kernel driver will free database from the gpu0.
if the app is running on gpu1, its database may be freed by gpu0 unexpectely.
need check kernel pointer in record to prevent the incorrect database free.
Date: Oct 17, 2016
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
}
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;
}
gckKERNEL kernel = Kernel;
gctUINT32 handle;
gctUINT32 i;
+ gctBOOL deleteDB = gcvTRUE;
gcmkHEADER_ARG("Kernel=0x%x ProcessID=%d", Kernel, ProcessID);
/* Next next record. */
next = record->next;
+ if (record->kernel != Kernel)
+ {
+ deleteDB = gcvFALSE;
+ continue;
+ }
+
/* Dispatch on record type. */
switch (record->type)
{
}
- /* Delete the database. */
- gcmkONERROR(gckKERNEL_DeleteDatabase(Kernel, database));
+ if (deleteDB == gcvTRUE)
+ {
+ /* Delete the database. */
+ gcmkONERROR(gckKERNEL_DeleteDatabase(Kernel, database));
+ }
/* Success. */
gcmkFOOTER_NO();