Reviewed-By: Jan Friesse <[email protected]> Steve, also note that same problem may be with circular_memory_map.
Steven Dake napsal(a): > Previously in the non-circular memory map call, a private mapping was created > and then this private mapping was then remapped as a shared mapping. This > doesn't work on sparc architecture port of Linux, and in general isn't > necessary. > > Signed-off-by: Steven Dake <[email protected]> > --- > exec/coroipcs.c | 18 ++++-------------- > lib/coroipcc.c | 17 ++++------------- > 2 files changed, 8 insertions(+), 27 deletions(-) > > diff --git a/exec/coroipcs.c b/exec/coroipcs.c > index a58c269..bc24b22 100644 > --- a/exec/coroipcs.c > +++ b/exec/coroipcs.c > @@ -229,7 +229,6 @@ memory_map ( > void **buf) > { > int32_t fd; > - void *addr_orig; > void *addr; > int32_t res; > > @@ -246,18 +245,9 @@ memory_map ( > goto error_close_unlink; > } > > - 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); > - > - if (addr != addr_orig) { > - munmap(addr_orig, bytes); > + addr = mmap (NULL, bytes, PROT_READ | PROT_WRITE, > + MAP_SHARED, fd, 0); > + if (addr == MAP_FAILED) { > goto error_close_unlink; > } > #ifdef COROSYNC_BSD > @@ -268,7 +258,7 @@ memory_map ( > if (res) { > return (-1); > } > - *buf = addr_orig; > + *buf = addr; > return (0); > > error_close_unlink: > diff --git a/lib/coroipcc.c b/lib/coroipcc.c > index 34db980..f963f0c 100644 > --- a/lib/coroipcc.c > +++ b/lib/coroipcc.c > @@ -391,7 +391,6 @@ static int > memory_map (char *path, const char *file, void **buf, size_t bytes) > { > int32_t fd; > - void *addr_orig; > void *addr; > int32_t res; > char *buffer; > @@ -433,17 +432,9 @@ retry_write: > } > 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); > - > - if (addr != addr_orig) { > + addr = mmap (NULL, bytes, PROT_READ | PROT_WRITE, > + MAP_SHARED, fd, 0); > + if (addr == MAP_FAILED) { > goto error_close_unlink; > } > #ifdef COROSYNC_BSD > @@ -454,7 +445,7 @@ retry_write: > if (res) { > return (-1); > } > - *buf = addr_orig; > + *buf = addr; > > return 0; > _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
