Module Name:    src
Committed By:   maxv
Date:           Thu Feb  2 19:09:08 UTC 2017

Modified Files:
        src/sys/arch/amd64/conf: Makefile.amd64
        src/sys/arch/amd64/include: param.h
        src/sys/arch/xen/conf: Makefile.xen

Log Message:
Increase KERNTEXTOFF from 1MB to 2MB on amd64. [1MB; 2MB[ is now handled
by UVM, so there is no physical loss.

On amd64 we always remap the kernel text with 2MB pages, and because of the
1MB start address we were forced to map [0MB; 2MB[ inside the first large
page. The problem is, the lower half is used by UVM to allocate physical
pages, and it is possible that some of these could be used by userland. We
could end up with userland-controllable data mapped into the kernel text on
a privileged page, which is far from being a good idea from a security pov.

I am not fixing i386 yet, because the large page size depends on PAE, and
we probably don't want to have a text located at 4MB on low-memory systems.

(note: I didn't introduce this issue, it was already there when I came in)


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/amd64/conf/Makefile.amd64
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/amd64/include/param.h
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/xen/conf/Makefile.xen

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/conf/Makefile.amd64
diff -u src/sys/arch/amd64/conf/Makefile.amd64:1.55 src/sys/arch/amd64/conf/Makefile.amd64:1.56
--- src/sys/arch/amd64/conf/Makefile.amd64:1.55	Fri Apr 29 02:17:25 2016
+++ src/sys/arch/amd64/conf/Makefile.amd64	Thu Feb  2 19:09:08 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.amd64,v 1.55 2016/04/29 02:17:25 christos Exp $
+#	$NetBSD: Makefile.amd64,v 1.56 2017/02/02 19:09:08 maxv Exp $
 
 # Makefile for NetBSD
 #
@@ -60,7 +60,7 @@ KERN_AS=	library
 ##
 ## (5) link settings
 ##
-TEXTADDR?=	0xffffffff80100000
+TEXTADDR?=	0xffffffff80200000
 EXTRA_LINKFLAGS=	-z max-page-size=0x100000
 LINKFLAGS_NORMAL=	-X
 KERNLDSCRIPT?= ${AMD64}/conf/kern.ldscript

Index: src/sys/arch/amd64/include/param.h
diff -u src/sys/arch/amd64/include/param.h:1.20 src/sys/arch/amd64/include/param.h:1.21
--- src/sys/arch/amd64/include/param.h:1.20	Fri Jan 20 00:29:28 2017
+++ src/sys/arch/amd64/include/param.h	Thu Feb  2 19:09:08 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.20 2017/01/20 00:29:28 maya Exp $	*/
+/*	$NetBSD: param.h,v 1.21 2017/02/02 19:09:08 maxv Exp $	*/
 
 #ifdef __x86_64__
 
@@ -34,11 +34,11 @@
  * config info into account.
  */
 #define	KERNBASE	0xffffffff80000000 /* start of kernel virtual space */
-#define	KERNTEXTOFF	0xffffffff80100000 /* start of kernel text */
+#define	KERNTEXTOFF	0xffffffff80200000 /* start of kernel text */
 #define	BTOPKERNBASE	((u_long)KERNBASE >> PGSHIFT)
 
 #define KERNTEXTOFF_HI	0xffffffff
-#define KERNTEXTOFF_LO	0x80100000
+#define KERNTEXTOFF_LO	0x80200000
 
 #define KERNBASE_HI	0xffffffff
 #define KERNBASE_LO	0x80000000

Index: src/sys/arch/xen/conf/Makefile.xen
diff -u src/sys/arch/xen/conf/Makefile.xen:1.40 src/sys/arch/xen/conf/Makefile.xen:1.41
--- src/sys/arch/xen/conf/Makefile.xen:1.40	Mon Aug 24 14:04:25 2015
+++ src/sys/arch/xen/conf/Makefile.xen	Thu Feb  2 19:09:08 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.xen,v 1.40 2015/08/24 14:04:25 uebayasi Exp $
+#	$NetBSD: Makefile.xen,v 1.41 2017/02/02 19:09:08 maxv Exp $
 #	NetBSD: Makefile.i386,v 1.132 2003/07/05 16:56:10 simonb Exp 
 
 # Makefile for NetBSD
@@ -105,7 +105,7 @@ vector.o: $S/arch/${XEN_BUILD}/${XEN_BUI
 .if ${XEN_BUILD} == i386
 TEXTADDR?=	0xc0100000
 .elif ${XEN_BUILD} == amd64
-TEXTADDR?=	0xffffffff80100000
+TEXTADDR?=	0xffffffff80200000
 .endif
 LINKFLAGS_NORMAL=	-X
 KERNLDSCRIPT?=	$S/arch/${XEN_BUILD}/conf/kern.ldscript.Xen

Reply via email to