blob: cb1c622d754fc62690e1d4e71d96ab1d91012894 [file] [log] [blame]
From 8a03be9603f321a2a2e12dae6519a7b043a79a4e Mon Sep 17 00:00:00 2001
From: luchaopa <luchao.pang@intel.com>
Date: Fri, 29 Nov 2019 13:37:29 +0800
Subject: [PATCH] [VP] fix illegal access and mem leak
fix illegal access after allocation failed.
fix memory leak after allocation failed.
Change-Id: I63b577f9f92a66c7c85b91a9843217539a9873d0
(cherry picked from commit 9b9dd30ae96196bb13ebc06a95f4c67fcf65e394)
---
media_driver/agnostic/common/vp/hal/vphal_renderer.cpp | 10 ++++++++++
media_driver/agnostic/common/vp/kdll/hal_kerneldll.c | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/media_driver/agnostic/common/vp/hal/vphal_renderer.cpp b/media_driver/agnostic/common/vp/hal/vphal_renderer.cpp
index 41eee450..b55b12dc 100644
--- a/media_driver/agnostic/common/vp/hal/vphal_renderer.cpp
+++ b/media_driver/agnostic/common/vp/hal/vphal_renderer.cpp
@@ -1480,11 +1480,21 @@ finish:
if (pKernelBin)
{
MOS_SafeFreeMemory(pKernelBin);
+ if (pKernelDllState && pKernelDllState->ComponentKernelCache.pCache == pKernelBin)
+ {
+ pKernelDllState->ComponentKernelCache.pCache = nullptr;
+ }
+ pKernelBin = nullptr;
}
if (pFcPatchBin)
{
MOS_SafeFreeMemory(pFcPatchBin);
+ if (pKernelDllState && pKernelDllState->CmFcPatchCache.pCache == pFcPatchBin)
+ {
+ pKernelDllState->CmFcPatchCache.pCache = nullptr;
+ }
+ pFcPatchBin = nullptr;
}
}
return eStatus;
diff --git a/media_driver/agnostic/common/vp/kdll/hal_kerneldll.c b/media_driver/agnostic/common/vp/kdll/hal_kerneldll.c
index c3b757e0..7532c736 100644
--- a/media_driver/agnostic/common/vp/kdll/hal_kerneldll.c
+++ b/media_driver/agnostic/common/vp/kdll/hal_kerneldll.c
@@ -3430,8 +3430,8 @@ Kdll_State *KernelDll_AllocateStates(
cleanup:
if (pState)
{
- MOS_FreeMemory(pState->ComponentKernelCache.pCache);
MOS_FreeMemory(pState->pSortedRules);
+ pState->pSortedRules = nullptr;
}
// Free DL States and temporary sort buffers
--
2.26.2