提交 21312370 编写于 作者: O openharmony_ci 提交者: Gitee

!152 修复LOS_RegionFind等接口竞态问题

Merge pull request !152 from JerryH/master
......@@ -1820,6 +1820,8 @@ UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)
return LOS_NOK;
}
(VOID)memset_s(poolStatus, sizeof(LOS_MEM_POOL_STATUS), 0, sizeof(LOS_MEM_POOL_STATUS));
struct OsMemNodeHead *tmpNode = NULL;
struct OsMemNodeHead *endNode = NULL;
UINT32 intSave;
......
......@@ -370,12 +370,24 @@ LosVmMapRegion *OsFindRegion(LosRbTree *regionRbTree, VADDR_T vaddr, size_t len)
LosVmMapRegion *LOS_RegionFind(LosVmSpace *vmSpace, VADDR_T addr)
{
return OsFindRegion(&vmSpace->regionRbTree, addr, 1);
LosVmMapRegion *region = NULL;
(VOID)LOS_MuxAcquire(&vmSpace->regionMux);
region = OsFindRegion(&vmSpace->regionRbTree, addr, 1);
(VOID)LOS_MuxRelease(&vmSpace->regionMux);
return region;
}
LosVmMapRegion *LOS_RegionRangeFind(LosVmSpace *vmSpace, VADDR_T addr, size_t len)
{
return OsFindRegion(&vmSpace->regionRbTree, addr, len);
LosVmMapRegion *region = NULL;
(VOID)LOS_MuxAcquire(&vmSpace->regionMux);
region = OsFindRegion(&vmSpace->regionRbTree, addr, len);
(VOID)LOS_MuxRelease(&vmSpace->regionMux);
return region;
}
VADDR_T OsAllocRange(LosVmSpace *vmSpace, size_t len)
......
......@@ -33,6 +33,7 @@
#include <stdlib.h>
#include "los_memory.h"
#include "los_vm_lock.h"
#include "los_vm_map.h"
#include "user_copy.h"
......@@ -47,11 +48,15 @@ extern void *DupUserMem(const void *ptr, size_t len, int needCopy);
__VA_ARGS__; \
return -get_errno(); \
} \
if (CheckRegion(OsCurrProcessGet()->vmSpace, (VADDR_T)(UINTPTR)ptr, len) == -1) { \
LosVmSpace *__aspace = OsCurrProcessGet()->vmSpace; \
(VOID)LOS_MuxAcquire(&__aspace->regionMux); \
if (CheckRegion(__aspace, (VADDR_T)(UINTPTR)ptr, len) == -1) { \
(VOID)LOS_MuxRelease(&__aspace->regionMux); \
set_errno(EFAULT); \
__VA_ARGS__; \
return -get_errno(); \
} \
(VOID)LOS_MuxRelease(&__aspace->regionMux); \
} \
} while (0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册