On Sun, May 16, 2010 at 11:40:38AM -0700, Steven Dake wrote:
> good for merge

Committed.

> 
> On Sun, 2010-05-16 at 18:40 +1000, Angus Salkeld wrote:
> > Signed-off-by: Angus Salkeld <asalk...@redhat.com>
> > ---
> >  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
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to