Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Unlink KMEM_GUARD leftovers.
details: https://anonhg.NetBSD.org/src/rev/c9632fc2bfcd
branches: trunk
changeset: 463273:c9632fc2bfcd
user: maxv <maxv%NetBSD.org@localhost>
date: Thu Aug 15 12:24:08 2019 +0000
description:
Unlink KMEM_GUARD leftovers.
diffstat:
share/man/man9/kmem.9 | 88 +--------------------------------------
sys/arch/mips/mips/pmap_machdep.c | 10 +---
sys/kern/files.kern | 6 +-
3 files changed, 6 insertions(+), 98 deletions(-)
diffs (168 lines):
diff -r 28a219ddf5c5 -r c9632fc2bfcd share/man/man9/kmem.9
--- a/share/man/man9/kmem.9 Thu Aug 15 12:06:42 2019 +0000
+++ b/share/man/man9/kmem.9 Thu Aug 15 12:24:08 2019 +0000
@@ -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 @@
.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 ,
diff -r 28a219ddf5c5 -r c9632fc2bfcd sys/arch/mips/mips/pmap_machdep.c
--- a/sys/arch/mips/mips/pmap_machdep.c Thu Aug 15 12:06:42 2019 +0000
+++ b/sys/arch/mips/mips/pmap_machdep.c Thu Aug 15 12:24:08 2019 +0000
@@ -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 @@
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;
diff -r 28a219ddf5c5 -r c9632fc2bfcd sys/kern/files.kern
--- a/sys/kern/files.kern Thu Aug 15 12:06:42 2019 +0000
+++ b/sys/kern/files.kern Thu Aug 15 12:24:08 2019 +0000
@@ -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_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
Home |
Main Index |
Thread Index |
Old Index