svn commit: r324949 - head/libexec/rtld-elf

Edward Tomasz Napierala trasz at FreeBSD.org
Tue Oct 24 10:48:28 UTC 2017


Author: trasz
Date: Tue Oct 24 10:48:26 2017
New Revision: 324949
URL: https://svnweb.freebsd.org/changeset/base/324949

Log:
  Use xmalloc and read(2) instead of mmap(2) to read in libmap.conf(5).
  This removes the need to call munmap(2) afterwards.
  
  MFC after:	2 weeks
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D12767

Modified:
  head/libexec/rtld-elf/libmap.c

Modified: head/libexec/rtld-elf/libmap.c
==============================================================================
--- head/libexec/rtld-elf/libmap.c	Tue Oct 24 08:56:11 2017	(r324948)
+++ head/libexec/rtld-elf/libmap.c	Tue Oct 24 10:48:26 2017	(r324949)
@@ -100,6 +100,7 @@ lmc_parse_file(char *path)
 {
 	struct lmc *p;
 	struct stat st;
+	ssize_t retval;
 	int fd;
 	char *lm_map;
 
@@ -128,10 +129,11 @@ lmc_parse_file(char *path)
 		}
 	}
 
-	lm_map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
-	if (lm_map == (const char *)MAP_FAILED) {
+	lm_map = xmalloc(st.st_size);
+	retval = read(fd, lm_map, st.st_size);
+	if (retval != st.st_size) {
 		close(fd);
-		dbg("lm_parse_file: mmap(\"%s\") failed, %s", path,
+		dbg("lm_parse_file: read(\"%s\") failed, %s", path,
 		    rtld_strerror(errno));
 		return;
 	}
@@ -142,7 +144,7 @@ lmc_parse_file(char *path)
 	p->ino = st.st_ino;
 	TAILQ_INSERT_HEAD(&lmc_head, p, next);
 	lmc_parse(lm_map, st.st_size);
-	munmap(lm_map, st.st_size);
+	free(lm_map);
 }
 
 static void


More information about the svn-src-head mailing list