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