]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use shared mapping to reserve memory when creating locale archive
authorAurelien Jarno <aurelien@aurel32.net>
Mon, 8 Feb 2010 13:58:31 +0000 (14:58 +0100)
committerAndreas Schwab <schwab@redhat.com>
Thu, 18 Mar 2010 16:09:13 +0000 (17:09 +0100)
ChangeLog
locale/programs/locarchive.c

index 68bf791817fbc73c2dcac9e77d89384756cf8c35..b46b4417af48b9b19c13f780f12c18a05c4936ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-27  Aurelien Jarno  <aurelien@aurel32.net>
+
+       [BZ #10855]
+       * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory
+       used later with MMAP_FIXED | MMAP_SHARED to cope with different
+       alignment restrictions.
+
 2009-11-24  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/grantpt.c (grantpt): Use CLOSE_ALL_FDS is available
index a58505852d86b0e9117f3e9a197dd8ce7997ee31..4335369d61eaa7f680f1c3e768b1f0d2c7a4156b 100644 (file)
@@ -134,7 +134,7 @@ create_archive (const char *archivefname, struct locarhandle *ah)
   size_t reserved = RESERVE_MMAP_SIZE;
   int xflags = 0;
   if (total < reserved
-      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
                       -1, 0)) != MAP_FAILED))
     xflags = MAP_FIXED;
   else
@@ -396,7 +396,7 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
   size_t reserved = RESERVE_MMAP_SIZE;
   int xflags = 0;
   if (total < reserved
-      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
                       -1, 0)) != MAP_FAILED))
     xflags = MAP_FIXED;
   else
@@ -614,7 +614,7 @@ open_archive (struct locarhandle *ah, bool readonly)
   int xflags = 0;
   void *p;
   if (st.st_size < reserved
-      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+      && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
                       -1, 0)) != MAP_FAILED))
     xflags = MAP_FIXED;
   else