|
@@ -4918,6 +4918,9 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env,
|
|
|
static inline abi_long do_shmdt(abi_ulong shmaddr)
|
|
|
{
|
|
|
int i;
|
|
|
+ abi_long rv;
|
|
|
+
|
|
|
+ mmap_lock();
|
|
|
|
|
|
for (i = 0; i < N_SHM_REGIONS; ++i) {
|
|
|
if (shm_regions[i].in_use && shm_regions[i].start == shmaddr) {
|
|
@@ -4926,8 +4929,11 @@ static inline abi_long do_shmdt(abi_ulong shmaddr)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ rv = get_errno(shmdt(g2h(shmaddr)));
|
|
|
+
|
|
|
+ mmap_unlock();
|
|
|
|
|
|
- return get_errno(shmdt(g2h(shmaddr)));
|
|
|
+ return rv;
|
|
|
}
|
|
|
|
|
|
#ifdef TARGET_NR_ipc
|