good for merge On Sun, 2010-05-16 at 18:40 +1000, Angus Salkeld wrote: > Signed-off-by: Angus Salkeld <[email protected]> > --- > exec/coroipcs.c | 29 +++++++++++++++++++++++++---- > lib/coroipcc.c | 16 ++++++++++++++++ > 2 files changed, 41 insertions(+), 4 deletions(-) > > diff --git a/exec/coroipcs.c b/exec/coroipcs.c > index b2d780c..a2deb8a 100644 > --- a/exec/coroipcs.c > +++ b/exec/coroipcs.c > @@ -263,13 +263,21 @@ memory_map ( > > unlink (path); > > - if (fd >= 0) { > - res = ftruncate (fd, bytes); > + if (fd == -1) { > + return (-1); > } > + > + 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); > } > > @@ -277,6 +285,7 @@ memory_map ( > MAP_FIXED | MAP_SHARED, fd, 0); > > if (addr != addr_orig) { > + close (fd); > return (-1); > } > #ifdef COROSYNC_BSD > @@ -306,13 +315,20 @@ circular_memory_map ( > > unlink (path); > > - if (fd >= 0) { > - res = ftruncate (fd, bytes); > + if (fd == -1) { > + return (-1); > } > + 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); > } > > @@ -320,6 +336,7 @@ circular_memory_map ( > MAP_FIXED | MAP_SHARED, fd, 0); > > if (addr != addr_orig) { > + close (fd); > return (-1); > } > #ifdef COROSYNC_BSD > @@ -329,6 +346,10 @@ circular_memory_map ( > 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 > diff --git a/lib/coroipcc.c b/lib/coroipcc.c > index c66d687..c453a7a 100644 > --- a/lib/coroipcc.c > +++ b/lib/coroipcc.c > @@ -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
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
