Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 471020 | Differences between
and this patch

Collapse All | Expand All

(-)a/locale/programs/locarchive.c (-8 / +10 lines)
Lines 37-42 Link Here
37
#include <stdint.h>
37
#include <stdint.h>
38
#include <sys/mman.h>
38
#include <sys/mman.h>
39
#include <sys/param.h>
39
#include <sys/param.h>
40
#include <sys/shm.h>
40
#include <sys/stat.h>
41
#include <sys/stat.h>
41
42
42
#include "../../crypt/md5.h"
43
#include "../../crypt/md5.h"
Lines 85-95 prepare_address_space (int fd, size_t total, size_t *reserved, int *xflags) Link Here
85
    {
86
    {
86
      void *p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_SHARED, fd, 0);
87
      void *p = mmap64 (NULL, RESERVE_MMAP_SIZE, PROT_NONE, MAP_SHARED, fd, 0);
87
      if (p != MAP_FAILED)
88
      if (p != MAP_FAILED)
88
        {
89
	{
89
          *reserved = RESERVE_MMAP_SIZE;
90
	  /* Some arches require fixed mappings to be aligned higher than
90
          *xflags = MAP_FIXED;
91
	     pagesize, and SHMLBA represents that size.  */
91
          return p;
92
	  size_t align_adjust = (uintptr_t)p & SHMLBA;
92
        }
93
	  *reserved = RESERVE_MMAP_SIZE - align_adjust;
94
	  *xflags = MAP_FIXED;
95
	  return p + align_adjust;
96
	}
93
    }
97
    }
94
98
95
  *reserved = total;
99
  *reserved = total;
Lines 271-278 file_data_available_p (struct locarhandle *ah, uint32_t offset, uint32_t size) Link Here
271
  if (st.st_size > ah->reserved)
275
  if (st.st_size > ah->reserved)
272
    return false;
276
    return false;
273
277
274
  const size_t pagesz = getpagesize ();
278
  size_t start = ah->mmaped & ~(SHMLBA - 1);
275
  size_t start = ah->mmaped & ~(pagesz - 1);
276
  void *p = mmap64 (ah->addr + start, st.st_size - start,
279
  void *p = mmap64 (ah->addr + start, st.st_size - start,
277
		    PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED,
280
		    PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED,
278
		    ah->fd, start);
281
		    ah->fd, start);
279
- 

Return to bug 471020