svn commit: r347693 - head/libexec/rtld-elf
Konstantin Belousov
kib at FreeBSD.org
Thu May 16 13:13:34 UTC 2019
Author: kib
Date: Thu May 16 13:13:33 2019
New Revision: 347693
URL: https://svnweb.freebsd.org/changeset/base/347693
Log:
rtld_malloc.c: cleanup morepages().
Use roundup2() and rounddown2() instead of inlining them.
Get rid of the fd local variable, use literal -1 for the mmap argument.
Use MAP_FAILED as mmap(2) failure indicator.
After that, apply some style.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/libexec/rtld-elf/rtld_malloc.c
Modified: head/libexec/rtld-elf/rtld_malloc.c
==============================================================================
--- head/libexec/rtld-elf/rtld_malloc.c Thu May 16 13:07:26 2019 (r347692)
+++ head/libexec/rtld-elf/rtld_malloc.c Thu May 16 13:13:33 2019 (r347693)
@@ -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