diff options
author | Alistair Strachan <alistair.strachan@imgtec.com> | 2017-05-15 17:44:46 -0700 |
---|---|---|
committer | Alistair Strachan <alistair.strachan@imgtec.com> | 2017-05-15 17:45:33 -0700 |
commit | c7f6085017e743d212dfac765ba189e9c47ec10b (patch) | |
tree | 497939933cb28293b208a6a63d7924cb607253ef | |
parent | 80c140586f32495ca6016c242b48f6b7ca03e92e (diff) | |
download | x86_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.c | 5 |
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); |