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