fix:修复共享内存shmat和shmdt接口之间存在的死锁问题

close #I40QOM

Change-Id: Ib3783f5d6b1095bf2100ab024fe0235a64355823
Signed-off-by: JerryH1011 <huangjieliang@huawei.com>
This commit is contained in:
JerryH1011 2021-07-19 14:37:36 +08:00
parent 700c3415c4
commit 7a6e4c8155
1 changed files with 3 additions and 2 deletions

View File

@ -742,6 +742,7 @@ INT32 ShmDt(const VOID *shmaddr)
/* remove it from aspace */
LOS_RbDelNode(&space->regionRbTree, &region->rbNode);
LOS_ArchMmuUnmap(&space->archMmu, region->range.base, region->range.size >> PAGE_SHIFT);
(VOID)LOS_MuxRelease(&space->regionMux);
/* free it */
free(region);
@ -750,7 +751,7 @@ INT32 ShmDt(const VOID *shmaddr)
if (seg == NULL) {
ret = EINVAL;
SYSV_SHM_UNLOCK();
goto ERROR_WITH_LOCK;
goto ERROR;
}
ShmPagesRefDec(seg);
@ -763,7 +764,7 @@ INT32 ShmDt(const VOID *shmaddr)
seg->ds.shm_lpid = LOS_GetCurrProcessID();
}
SYSV_SHM_UNLOCK();
(VOID)LOS_MuxRelease(&space->regionMux);
return 0;
ERROR_WITH_LOCK: