diff --git a/kernel/base/core/los_process.c b/kernel/base/core/los_process.c index 3098d3db..13216a8a 100644 --- a/kernel/base/core/los_process.c +++ b/kernel/base/core/los_process.c @@ -374,7 +374,7 @@ LITE_OS_SEC_TEXT VOID OsProcessResourcesToFree(LosProcessCB *processCB) #ifdef LOSCFG_KERNEL_LITEIPC if (OsProcessIsUserMode(processCB)) { - LiteIpcPoolDelete(&(processCB->ipcInfo)); + LiteIpcPoolDelete(&(processCB->ipcInfo), processCB->processID); (VOID)memset_s(&(processCB->ipcInfo), sizeof(ProcIpcInfo), 0, sizeof(ProcIpcInfo)); } #endif diff --git a/kernel/extended/liteipc/hm_liteipc.c b/kernel/extended/liteipc/hm_liteipc.c index a4a99fbe..f23c6894 100644 --- a/kernel/extended/liteipc/hm_liteipc.c +++ b/kernel/extended/liteipc/hm_liteipc.c @@ -254,11 +254,10 @@ LITE_OS_SEC_TEXT UINT32 LiteIpcPoolReInit(ProcIpcInfo *child, const ProcIpcInfo return LOS_OK; } -LITE_OS_SEC_TEXT VOID LiteIpcPoolDelete(ProcIpcInfo *ipcInfo) +LITE_OS_SEC_TEXT VOID LiteIpcPoolDelete(ProcIpcInfo *ipcInfo, UINT32 processID) { UINT32 intSave; IpcUsedNode *node = NULL; - UINT32 processID = LOS_GetCurrProcessID(); if (ipcInfo->pool.kvaddr != NULL) { LOS_VFree(ipcInfo->pool.kvaddr); ipcInfo->pool.kvaddr = NULL; diff --git a/kernel/extended/liteipc/hm_liteipc.h b/kernel/extended/liteipc/hm_liteipc.h index 3dfa0931..a7d46cf1 100644 --- a/kernel/extended/liteipc/hm_liteipc.h +++ b/kernel/extended/liteipc/hm_liteipc.h @@ -184,7 +184,7 @@ extern UINT32 LiteIpcPoolInit(ProcIpcInfo *ipcInfo); extern UINT32 LiteIpcPoolReInit(ProcIpcInfo *childIpcInfo, const ProcIpcInfo *parentIpcInfo); /* delete process liteipc memory pool */ -extern VOID LiteIpcPoolDelete(ProcIpcInfo *ipcInfo); +extern VOID LiteIpcPoolDelete(ProcIpcInfo *ipcInfo, UINT32 processID); /* remove service handle and send death notify */ extern VOID LiteIpcRemoveServiceHandle(LosTaskCB *taskCB);