xref: /freebsd/share/man/man9/memguard.9 (revision f8cd5f23d460944bb6eef22393bd0d2cbf607219)
1f8cd5f23SChristian Brueffer.\" Copyright (c) 2005 Christian Brueffer
2f8cd5f23SChristian Brueffer.\" All rights reserved.
3f8cd5f23SChristian Brueffer.\"
4f8cd5f23SChristian Brueffer.\" Redistribution and use in source and binary forms, with or without
5f8cd5f23SChristian Brueffer.\" modification, are permitted provided that the following conditions
6f8cd5f23SChristian Brueffer.\" are met:
7f8cd5f23SChristian Brueffer.\" 1. Redistributions of source code must retain the above copyright
8f8cd5f23SChristian Brueffer.\"    notice, this list of conditions and the following disclaimer.
9f8cd5f23SChristian Brueffer.\" 2. Redistributions in binary form must reproduce the above copyright
10f8cd5f23SChristian Brueffer.\"    notice, this list of conditions and the following disclaimer in the
11f8cd5f23SChristian Brueffer.\"    documentation and/or other materials provided with the distribution.
12f8cd5f23SChristian Brueffer.\"
13f8cd5f23SChristian Brueffer.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14f8cd5f23SChristian Brueffer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15f8cd5f23SChristian Brueffer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16f8cd5f23SChristian Brueffer.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17f8cd5f23SChristian Brueffer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18f8cd5f23SChristian Brueffer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19f8cd5f23SChristian Brueffer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20f8cd5f23SChristian Brueffer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21f8cd5f23SChristian Brueffer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22f8cd5f23SChristian Brueffer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23f8cd5f23SChristian Brueffer.\" SUCH DAMAGE.
24f8cd5f23SChristian Brueffer.\"
25f8cd5f23SChristian Brueffer.\" $FreeBSD$
26f8cd5f23SChristian Brueffer.\"
27f8cd5f23SChristian Brueffer.Dd February 22, 2005
28f8cd5f23SChristian Brueffer.Dt MEMGUARD 9
29f8cd5f23SChristian Brueffer.Os
30f8cd5f23SChristian Brueffer.Sh NAME
31f8cd5f23SChristian Brueffer.Nm MemGuard
32f8cd5f23SChristian Brueffer.Nd "memory allocator for debugging purposes"
33f8cd5f23SChristian Brueffer.Sh SYNOPSIS
34f8cd5f23SChristian Brueffer.Cd "options DEBUG_MEMGUARD"
35f8cd5f23SChristian Brueffer.Sh DESCRIPTION
36f8cd5f23SChristian Brueffer.Nm
37f8cd5f23SChristian Bruefferis a simple and small replacement memory allocator designed
38f8cd5f23SChristian Bruefferto help detect tamper-after-free scenarios.
39f8cd5f23SChristian BruefferThese problems are more and more common and likely with
40f8cd5f23SChristian Brueffermultithreaded kernels where race conditions are more prevalent.
41f8cd5f23SChristian Brueffer.Pp
42f8cd5f23SChristian BruefferCurrently,
43f8cd5f23SChristian Brueffer.Nm
44f8cd5f23SChristian Brueffercan only take over
45f8cd5f23SChristian Brueffer.Fn malloc ,
46f8cd5f23SChristian Brueffer.Fn realloc
47f8cd5f23SChristian Bruefferand
48f8cd5f23SChristian Brueffer.Fn free
49f8cd5f23SChristian Bruefferfor a particular malloc type.
50f8cd5f23SChristian Brueffer.Nm
51f8cd5f23SChristian Brueffertakes over
52f8cd5f23SChristian Brueffer.Dv M_SUBPROC
53f8cd5f23SChristian Bruefferallocations by default.
54f8cd5f23SChristian Brueffer.Sh FILES
55f8cd5f23SChristian Brueffer.Bl -tag -width ".Pa src/sys/kern/kern_malloc.c" -compact
56f8cd5f23SChristian Brueffer.It Pa src/sys/kern/kern_malloc.c
57f8cd5f23SChristian BruefferFile to replace the malloc type in
58f8cd5f23SChristian Brueffer.El
59f8cd5f23SChristian Brueffer.Sh EXAMPLES
60f8cd5f23SChristian BruefferThe following steps are necessary to use
61f8cd5f23SChristian Brueffer.Nm :
62f8cd5f23SChristian Brueffer.Bl -enum
63f8cd5f23SChristian Brueffer.It
64f8cd5f23SChristian BruefferPut the
65f8cd5f23SChristian Brueffer.Dv DEBUG_MEMGUARD
66f8cd5f23SChristian Bruefferoption into your kernel config.
67f8cd5f23SChristian Brueffer.It
68f8cd5f23SChristian BruefferOpen
69f8cd5f23SChristian Brueffer.Pa src/sys/kern/kern_malloc.c
70f8cd5f23SChristian Bruefferin your favourite editor.
71f8cd5f23SChristian BruefferLook for lines containing
72f8cd5f23SChristian Brueffer.Dq Li "XXX CHANGEME!"
73f8cd5f23SChristian Bruefferand replace
74f8cd5f23SChristian Brueffer.Dv M_SUBPROC
75f8cd5f23SChristian Bruefferwith the appropriate malloc type.
76f8cd5f23SChristian BruefferThis might require additional but small/simple
77f8cd5f23SChristian Brueffercode modifications
78f8cd5f23SChristian Brueffer(e.g., if the malloc type is declared out of scope).
79f8cd5f23SChristian Brueffer.It
80f8cd5f23SChristian BruefferBuild and install your kernel.
81f8cd5f23SChristian BruefferTune the
82f8cd5f23SChristian Brueffer.Va vm.memguard_divisor
83f8cd5f23SChristian Bruefferboot-time tunable, which is used to scale how much of
84f8cd5f23SChristian Brueffer.Va kmem_map
85f8cd5f23SChristian Bruefferyou want to allot for
86f8cd5f23SChristian Brueffer.Nm .
87f8cd5f23SChristian BruefferThe default is 10, so
88f8cd5f23SChristian Brueffer.Va kmem_size Ns /10
89f8cd5f23SChristian Bruefferbytes will be used.
90f8cd5f23SChristian BruefferThe
91f8cd5f23SChristian Brueffer.Va kmem_size
92f8cd5f23SChristian Brueffervalue can be obtained via the
93f8cd5f23SChristian Brueffer.Va vm.kmem_size
94f8cd5f23SChristian Brueffer.Xr sysctl 8
95f8cd5f23SChristian Brueffervariable.
96f8cd5f23SChristian Brueffer.El
97f8cd5f23SChristian Brueffer.Sh SEE ALSO
98f8cd5f23SChristian Brueffer.Xr sysctl 8 ,
99f8cd5f23SChristian Brueffer.Xr vmstat 8 ,
100f8cd5f23SChristian Brueffer.Xr contigmalloc 9 ,
101f8cd5f23SChristian Brueffer.Xr malloc 9
102f8cd5f23SChristian Brueffer.Sh HISTORY
103f8cd5f23SChristian Brueffer.Nm
104f8cd5f23SChristian Bruefferfirst appeared in
105f8cd5f23SChristian Brueffer.Fx 6.0 .
106f8cd5f23SChristian Brueffer.Sh AUTHORS
107f8cd5f23SChristian Brueffer.An -nosplit
108f8cd5f23SChristian Brueffer.Nm
109f8cd5f23SChristian Bruefferwas written by
110f8cd5f23SChristian Brueffer.An Bosko Milekic Aq bmilekic@FreeBSD.org .
111f8cd5f23SChristian BruefferThis manual page was written by
112f8cd5f23SChristian Brueffer.An Christian Brueffer Aq brueffer@FreeBSD.org .
113f8cd5f23SChristian Brueffer.Sh BUGS
114f8cd5f23SChristian BruefferCurrently, it is not possible to override UMA
115f8cd5f23SChristian Brueffer.Xr zone 9
116f8cd5f23SChristian Bruefferallocations.
117