diff --git a/kernel/base/core/los_process.c b/kernel/base/core/los_process.c index 724ecf66490759119fdcb02a4d7beaa22b2168e5..c1d427d8cc483f3944672302837d9e9db50722ab 100644 --- a/kernel/base/core/los_process.c +++ b/kernel/base/core/los_process.c @@ -1925,13 +1925,18 @@ ERROR: STATIC UINT32 OsCopyUser(LosProcessCB *childCB, LosProcessCB *parentCB) { #ifdef LOSCFG_SECURITY_CAPABILITY - UINT32 size = sizeof(User) + sizeof(UINT32) * (parentCB->user->groupNumber - 1); + UINT32 intSave; + UINT32 size; + SCHEDULER_LOCK(intSave); + size = sizeof(User) + sizeof(UINT32) * (parentCB->user->groupNumber - 1); childCB->user = LOS_MemAlloc(m_aucSysMem1, size); if (childCB->user == NULL) { + SCHEDULER_UNLOCK(intSave); return LOS_ENOMEM; } (VOID)memcpy_s(childCB->user, size, parentCB->user, size); + SCHEDULER_UNLOCK(intSave); #endif return LOS_OK; }