diff --git a/kernel/base/core/los_process.c b/kernel/base/core/los_process.c index 3098d3dbee7f36b75b5ae15c7b03c648dab4a06c..13216a8a39f9325c783e895f1c33d9136d875716 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 a4a99fbed931c306d0c591129a4d3681ed9b0548..f23c6894a0ca5dbfcee5c2ea3aa912bd73797f93 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 3dfa09316166210022fa318b0e0628a3ada5de92..a7d46cf1d49d73d254521f58929b057ab7c91a53 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);