|
|
@@ -300,11 +300,16 @@ circular_memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
}
|
|
|
|
|
|
res = ftruncate (fd, bytes);
|
|
|
+ if (res == -1) {
|
|
|
+ close (fd);
|
|
|
+ return (-1);
|
|
|
+ }
|
|
|
|
|
|
addr_orig = mmap (NULL, bytes << 1, PROT_NONE,
|
|
|
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
|
|
|
|
|
if (addr_orig == MAP_FAILED) {
|
|
|
+ close (fd);
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -312,6 +317,7 @@ circular_memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
MAP_FIXED | MAP_SHARED, fd, 0);
|
|
|
|
|
|
if (addr != addr_orig) {
|
|
|
+ close (fd);
|
|
|
return (-1);
|
|
|
}
|
|
|
#ifdef COROSYNC_BSD
|
|
|
@@ -321,6 +327,10 @@ circular_memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
addr = mmap (((char *)addr_orig) + bytes,
|
|
|
bytes, PROT_READ | PROT_WRITE,
|
|
|
MAP_FIXED | MAP_SHARED, fd, 0);
|
|
|
+ if (addr == MAP_FAILED) {
|
|
|
+ close (fd);
|
|
|
+ return (-1);
|
|
|
+ }
|
|
|
#ifdef COROSYNC_BSD
|
|
|
madvise(((char *)addr_orig) + bytes, bytes, MADV_NOSYNC);
|
|
|
#endif
|
|
|
@@ -372,11 +382,16 @@ memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
}
|
|
|
|
|
|
res = ftruncate (fd, bytes);
|
|
|
+ if (res == -1) {
|
|
|
+ close (fd);
|
|
|
+ return (-1);
|
|
|
+ }
|
|
|
|
|
|
addr_orig = mmap (NULL, bytes, PROT_NONE,
|
|
|
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
|
|
|
|
|
if (addr_orig == MAP_FAILED) {
|
|
|
+ close (fd);
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -384,6 +399,7 @@ memory_map (char *path, const char *file, void **buf, size_t bytes)
|
|
|
MAP_FIXED | MAP_SHARED, fd, 0);
|
|
|
|
|
|
if (addr != addr_orig) {
|
|
|
+ close (fd);
|
|
|
return (-1);
|
|
|
}
|
|
|
#ifdef COROSYNC_BSD
|