summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlistair Strachan <alistair.strachan@imgtec.com>2017-05-15 17:44:46 -0700
committerAlistair Strachan <alistair.strachan@imgtec.com>2017-05-15 17:45:33 -0700
commitc7f6085017e743d212dfac765ba189e9c47ec10b (patch)
tree497939933cb28293b208a6a63d7924cb607253ef
parent80c140586f32495ca6016c242b48f6b7ca03e92e (diff)
downloadx86_64-android-x86_64-fugu-3.10-o-preview-3.tar.gz
gpu: Fix a memory tracking bug with kmallocs.android-o-preview-3_r0.5android-x86_64-fugu-3.10-o-preview-3
If a kmalloc was made by one PID and freed by another, it would not be tracked correctly and appeared to leak. The memory did not actually leak. Bug: 38184708 Change-Id: Ia293c210de6b01f2e909a0f3f05d21319151d9a5 Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com>
-rw-r--r--drivers/staging/imgtec/rogue/allocmem.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/staging/imgtec/rogue/allocmem.c b/drivers/staging/imgtec/rogue/allocmem.c
index 0699da854561..ffabcf58e432 100644
--- a/drivers/staging/imgtec/rogue/allocmem.c
+++ b/drivers/staging/imgtec/rogue/allocmem.c
@@ -365,7 +365,10 @@ IMG_INTERNAL void (OSFreeMem)(void *pvMem)
{
#if !defined(PVR_DISABLE_KMALLOC_MEMSTATS)
#if !defined(PVRSRV_ENABLE_MEMORY_STATS)
- PVRSRVStatsDecrMemAllocStat(PVRSRV_MEM_ALLOC_TYPE_KMALLOC, ksize(pvMem));
+ {
+ IMG_UINT32 *puiTemp = (IMG_UINT32*) (((IMG_BYTE*)pvMem) + (ksize(pvMem) - ALLOCMEM_MEMSTATS_PADDING));
+ PVRSRVStatsDecrMemKAllocStat(ksize(pvMem), *puiTemp);
+ }
#else
PVRSRVStatsRemoveMemAllocRecord(PVRSRV_MEM_ALLOC_TYPE_KMALLOC,
(IMG_UINT64)(uintptr_t) pvMem);