Module Name: src
Committed By: maxv
Date: Thu Aug 15 12:24:09 UTC 2019
Modified Files:
src/share/man/man9: kmem.9
src/sys/arch/mips/mips: pmap_machdep.c
src/sys/kern: files.kern
Log Message:
Unlink KMEM_GUARD leftovers.
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/share/man/man9/kmem.9
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/mips/mips/pmap_machdep.c
cvs rdiff -u -r1.34 -r1.35 src/sys/kern/files.kern
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man9/kmem.9
diff -u src/share/man/man9/kmem.9:1.23 src/share/man/man9/kmem.9:1.24
--- src/share/man/man9/kmem.9:1.23 Tue Nov 7 18:36:27 2017
+++ src/share/man/man9/kmem.9 Thu Aug 15 12:24:08 2019
@@ -1,4 +1,4 @@
-.\" $NetBSD: kmem.9,v 1.23 2017/11/07 18:36:27 christos Exp $
+.\" $NetBSD: kmem.9,v 1.24 2019/08/15 12:24:08 maxv Exp $
.\"
.\" Copyright (c)2006 YAMAMOTO Takashi,
.\" All rights reserved.
@@ -25,7 +25,7 @@
.\" SUCH DAMAGE.
.\"
.\" ------------------------------------------------------------
-.Dd November 7, 2017
+.Dd August 15, 2019
.Dt KMEM 9
.Os
.\" ------------------------------------------------------------
@@ -69,8 +69,6 @@
.\" ------------------------------------------------------------
.Pp
.Cd "options KMEM_SIZE"
-.Cd "options KMEM_REDZONE"
-.Cd "options KMEM_GUARD"
.Sh DESCRIPTION
.Fn kmem_alloc
allocates kernel wired memory.
@@ -260,89 +258,7 @@ Any mismatch triggers a panic.
.Pp
.Dv KMEM_SIZE
is enabled by default on
-.Dv DIAGNOSTIC
-and
-.Dv DEBUG .
-.Ss KMEM_REDZONE
-Kernels compiled with the
-.Dv KMEM_REDZONE
-option add a dynamic pattern of two bytes at the end of each allocated
-buffer, and check this pattern when freeing to ensure the caller hasn't
-written outside the requested area.
-This option does not introduce a significant performance impact,
-but has two drawbacks: it only catches write overflows, and catches
-them only on
-.Fn kmem_free .
-.Pp
-.Dv KMEM_REDZONE
-is enabled by default on
.Dv DIAGNOSTIC .
-.Ss KMEM_GUARD
-Kernels compiled with the
-.Dv KMEM_GUARD
-option perform CPU intensive sanity checks on kmem operations.
-It adds additional, very high overhead runtime verification to kmem
-operations.
-It must be enabled with
-.Dv KMEM_SIZE .
-.Pp
-.Dv KMEM_GUARD
-tries to catch the following types of bugs:
-.Bl -bullet
-.It
-Overflow at time of occurrence, by means of a guard page.
-An unmapped guard page sits immediately after the requested area;
-a read/write overflow therefore triggers a page fault.
-.It
-Underflow at
-.Fn kmem_free ,
-by using
-.Dv KMEM_SIZE Ap s
-registered size.
-If an underflow occurs, the size stored by
-.Dv KMEM_SIZE
-will be overwritten, which means that when freeing, the kernel will
-spot the mismatch.
-.It
-Use-after-free at time of occurrence.
-When freeing, the memory is unmapped, and depending on the value
-of kmem_guard_depth, the kernel will more or less delay the recycling
-of that memory.
-Which means that any ulterior read/write access to the memory will
-trigger a page fault, given it hasn't been recycled yet.
-.El
-.Pp
-To enable it, boot the system with the
-.Fl d
-option, which causes the debugger to be entered early during the kernel
-boot process.
-Issue commands such as the following:
-.Bd -literal
-db> w kmem_guard_depth 0t30000
-db> c
-.Ed
-.Pp
-This instructs
-.Dv kmem_guard
-to queue up to 60000 (30000*2) pages of unmapped KVA to catch
-use-after-free type errors.
-When
-.Fn kmem_free
-is called, memory backing a freed item is unmapped and the kernel VA
-space pushed onto a FIFO.
-The VA space will not be reused until another 30k items have been freed.
-Until reused the kernel will catch invalid accesses and panic with a page fault.
-Limitations:
-.Bl -bullet
-.It
-It has a severe impact on performance.
-.It
-It is best used on a 64-bit machine with lots of RAM.
-.El
-.Pp
-.Dv KMEM_GUARD
-is enabled by default on
-.Dv DEBUG .
.Sh RETURN VALUES
On success,
.Fn kmem_alloc ,
Index: src/sys/arch/mips/mips/pmap_machdep.c
diff -u src/sys/arch/mips/mips/pmap_machdep.c:1.24 src/sys/arch/mips/mips/pmap_machdep.c:1.25
--- src/sys/arch/mips/mips/pmap_machdep.c:1.24 Sun Jul 14 09:31:33 2019
+++ src/sys/arch/mips/mips/pmap_machdep.c Thu Aug 15 12:24:08 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_machdep.c,v 1.24 2019/07/14 09:31:33 skrll Exp $ */
+/* $NetBSD: pmap_machdep.c,v 1.25 2019/08/15 12:24:08 maxv Exp $ */
/*-
* Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.24 2019/07/14 09:31:33 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.25 2019/08/15 12:24:08 maxv Exp $");
/*
* Manages physical address maps.
@@ -378,12 +378,6 @@ pmap_bootstrap(void)
sysmap_size = (VM_PHYS_SIZE + (ubc_nwins << ubc_winshift) +
bufsz + 16 * NCARGS + pager_map_size) / NBPG +
(maxproc * UPAGES) + nkmempages;
-#ifdef DEBUG
- {
- extern int kmem_guard_depth;
- sysmap_size += kmem_guard_depth;
- }
-#endif
#ifdef SYSVSHM
sysmap_size += shminfo.shmall;
Index: src/sys/kern/files.kern
diff -u src/sys/kern/files.kern:1.34 src/sys/kern/files.kern:1.35
--- src/sys/kern/files.kern:1.34 Thu Apr 4 20:19:07 2019
+++ src/sys/kern/files.kern Thu Aug 15 12:24:08 2019
@@ -1,4 +1,4 @@
-# $NetBSD: files.kern,v 1.34 2019/04/04 20:19:07 christos Exp $
+# $NetBSD: files.kern,v 1.35 2019/08/15 12:24:08 maxv Exp $
#
# kernel sources
@@ -123,9 +123,7 @@ file kern/subr_ipi.c kern
file kern/subr_kcpuset.c kern
file kern/subr_kleak.c kleak
file kern/subr_kcov.c kcov
-defflag opt_kmem.h KMEM_GUARD
- KMEM_SIZE
-defparam opt_kmem.h KMEM_GUARD_DEPTH
+defflag opt_kmem.h KMEM_SIZE
file kern/subr_kmem.c kern
file kern/subr_kobj.c kern
file kern/subr_kobj_vfs.c kern