diff options
| -rw-r--r-- | src/mman/mmap.c | 13 | ||||
| -rw-r--r-- | src/mman/munmap.c | 2 | 
2 files changed, 7 insertions, 8 deletions
| diff --git a/src/mman/mmap.c b/src/mman/mmap.c index 1917a540..56e39a7a 100644 --- a/src/mman/mmap.c +++ b/src/mman/mmap.c @@ -16,8 +16,6 @@ weak_alias(dummy0, __vm_unlock);  void *__mmap(void *start, size_t len, int prot, int flags, int fd, off_t off)  { -	void *ret; -  	if (off & OFF_MASK) {  		errno = EINVAL;  		return MAP_FAILED; @@ -26,14 +24,15 @@ void *__mmap(void *start, size_t len, int prot, int flags, int fd, off_t off)  		errno = ENOMEM;  		return MAP_FAILED;  	} -	if (flags & MAP_FIXED) __vm_lock(-1); +	if (flags & MAP_FIXED) { +		__vm_lock(-1); +		__vm_unlock(); +	}  #ifdef SYS_mmap2 -	ret = (void *)syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT); +	return (void *)syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT);  #else -	ret = (void *)syscall(SYS_mmap, start, len, prot, flags, fd, off); +	return (void *)syscall(SYS_mmap, start, len, prot, flags, fd, off);  #endif -	if (flags & MAP_FIXED) __vm_unlock(); -	return ret;  }  weak_alias(__mmap, mmap); diff --git a/src/mman/munmap.c b/src/mman/munmap.c index 8488d75c..359c691f 100644 --- a/src/mman/munmap.c +++ b/src/mman/munmap.c @@ -11,8 +11,8 @@ int __munmap(void *start, size_t len)  {  	int ret;  	__vm_lock(-1); -	ret = syscall(SYS_munmap, start, len);  	__vm_unlock(); +	ret = syscall(SYS_munmap, start, len);  	return ret;  } | 
