svn commit: r348161 - stable/12/libexec/rtld-elf
Konstantin Belousov
kib at FreeBSD.org
Thu May 23 12:52:21 UTC 2019
Author: kib
Date: Thu May 23 12:52:19 2019
New Revision: 348161
URL: https://svnweb.freebsd.org/changeset/base/348161
Log:
MFC r347693:
rtld_malloc.c: cleanup morepages().
Modified:
stable/12/libexec/rtld-elf/rtld_malloc.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/libexec/rtld-elf/rtld_malloc.c
==============================================================================
--- stable/12/libexec/rtld-elf/rtld_malloc.c Thu May 23 12:51:29 2019 (r348160)
+++ stable/12/libexec/rtld-elf/rtld_malloc.c Thu May 23 12:52:19 2019 (r348161)
@@ -345,12 +345,11 @@ findbucket(union overhead *freep, int srchlen)
static int
morepages(int n)
{
- int fd = -1;
- int offset;
+ caddr_t addr;
+ int offset;
if (pagepool_end - pagepool_start > pagesz) {
- caddr_t addr = (caddr_t)
- (((long)pagepool_start + pagesz - 1) & ~(pagesz - 1));
+ addr = (caddr_t)roundup2((long)pagepool_start, pagesz);
if (munmap(addr, pagepool_end - addr) != 0) {
#ifdef IN_RTLD
rtld_fdprintf(STDERR_FILENO, _BASENAME_RTLD ": "
@@ -360,20 +359,21 @@ morepages(int n)
}
}
- offset = (long)pagepool_start - ((long)pagepool_start & ~(pagesz - 1));
+ offset = (long)pagepool_start - rounddown2((long)pagepool_start,
+ pagesz);
- if ((pagepool_start = mmap(0, n * pagesz,
- PROT_READ|PROT_WRITE,
- MAP_ANON|MAP_PRIVATE, fd, 0)) == (caddr_t)-1) {
+ pagepool_start = mmap(0, n * pagesz, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_PRIVATE, -1, 0);
+ if (pagepool_start == MAP_FAILED) {
#ifdef IN_RTLD
rtld_fdprintf(STDERR_FILENO, _BASENAME_RTLD ": morepages: "
"cannot mmap anonymous memory: %s\n",
rtld_strerror(errno));
#endif
- return 0;
+ return (0);
}
pagepool_end = pagepool_start + n * pagesz;
pagepool_start += offset;
- return n;
+ return (n);
}
More information about the svn-src-all
mailing list