|
@@ -405,7 +405,6 @@ static int
|
|
|
memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
{
|
|
{
|
|
|
int32_t fd;
|
|
int32_t fd;
|
|
|
- void *addr_orig;
|
|
|
|
|
void *addr;
|
|
void *addr;
|
|
|
int32_t res;
|
|
int32_t res;
|
|
|
char *buffer;
|
|
char *buffer;
|
|
@@ -451,28 +450,22 @@ retry_write:
|
|
|
}
|
|
}
|
|
|
free (buffer);
|
|
free (buffer);
|
|
|
|
|
|
|
|
- addr_orig = mmap (NULL, bytes, PROT_NONE,
|
|
|
|
|
- MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
|
|
|
|
-
|
|
|
|
|
- if (addr_orig == MAP_FAILED) {
|
|
|
|
|
- goto error_close_unlink;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- addr = mmap (addr_orig, bytes, PROT_READ | PROT_WRITE,
|
|
|
|
|
- MAP_FIXED | MAP_SHARED, fd, 0);
|
|
|
|
|
|
|
+ addr = mmap (NULL, bytes, PROT_READ | PROT_WRITE,
|
|
|
|
|
+ MAP_SHARED, fd, 0);
|
|
|
|
|
|
|
|
- if (addr != addr_orig) {
|
|
|
|
|
|
|
+ if (addr == MAP_FAILED) {
|
|
|
goto error_close_unlink;
|
|
goto error_close_unlink;
|
|
|
}
|
|
}
|
|
|
#if (defined COROSYNC_BSD && defined MADV_NOSYNC)
|
|
#if (defined COROSYNC_BSD && defined MADV_NOSYNC)
|
|
|
- madvise(addr_orig, bytes, MADV_NOSYNC);
|
|
|
|
|
|
|
+ madvise(addr, bytes, MADV_NOSYNC);
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
res = close (fd);
|
|
res = close (fd);
|
|
|
if (res) {
|
|
if (res) {
|
|
|
return (-1);
|
|
return (-1);
|
|
|
}
|
|
}
|
|
|
- *buf = addr_orig;
|
|
|
|
|
|
|
+ *buf = addr;
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|