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.\" 27b88c6e87SChristian Brueffer.Dd January 31, 2006 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.Sh EXAMPLES 51104a3dc0SPawel Jakub DawidekTo use memguard for memory type compiled into the kernel, one has to add the 52104a3dc0SPawel Jakub Dawidekfollowing line to the 53104a3dc0SPawel Jakub Dawidek.Pa /boot/loader.conf : 54104a3dc0SPawel Jakub Dawidek.Bd -literal -offset indent 55104a3dc0SPawel Jakub Dawidekvm.memguard.desc=<memory_type> 56104a3dc0SPawel Jakub Dawidek.Ed 57104a3dc0SPawel Jakub Dawidek.Pp 58104a3dc0SPawel Jakub DawidekWhere memory_type is a short description of memory type to monitor. 59104a3dc0SPawel Jakub Dawidek.Pp 60104a3dc0SPawel Jakub DawidekTo use memguard for memory type defined in a kernel module, one has to set 61104a3dc0SPawel Jakub Dawidek.Va vm.memguard.desc 62104a3dc0SPawel Jakub Dawidek.Xr sysctl 8 63104a3dc0SPawel Jakub Dawidekvariable before loading the module: 64104a3dc0SPawel Jakub Dawidek.Bd -literal -offset indent 65104a3dc0SPawel Jakub Dawideksysctl vm.memguard.desc=<memory_type> 66104a3dc0SPawel Jakub Dawidek.Ed 67104a3dc0SPawel Jakub Dawidek.Pp 68104a3dc0SPawel Jakub DawidekThe 69104a3dc0SPawel Jakub Dawidek.Va vm.memguard.divisor 70104a3dc0SPawel Jakub Dawidekboot-time tunable is used to scale how much of 71f8cd5f23SChristian Brueffer.Va kmem_map 72104a3dc0SPawel Jakub Dawidekone wants to allocate for 73f8cd5f23SChristian Brueffer.Nm . 74f8cd5f23SChristian BruefferThe default is 10, so 75f8cd5f23SChristian Brueffer.Va kmem_size Ns /10 76f8cd5f23SChristian Bruefferbytes will be used. 77f8cd5f23SChristian BruefferThe 78f8cd5f23SChristian Brueffer.Va kmem_size 79f8cd5f23SChristian Brueffervalue can be obtained via the 80f8cd5f23SChristian Brueffer.Va vm.kmem_size 81f8cd5f23SChristian Brueffer.Xr sysctl 8 82f8cd5f23SChristian Brueffervariable. 83f8cd5f23SChristian Brueffer.Sh SEE ALSO 84f8cd5f23SChristian Brueffer.Xr sysctl 8 , 85f8cd5f23SChristian Brueffer.Xr vmstat 8 , 86f8cd5f23SChristian Brueffer.Xr contigmalloc 9 , 87b88c6e87SChristian Brueffer.Xr malloc 9 , 88b88c6e87SChristian Brueffer.Xr redzone 9 89f8cd5f23SChristian Brueffer.Sh HISTORY 90f8cd5f23SChristian Brueffer.Nm 91f8cd5f23SChristian Bruefferfirst appeared in 92f8cd5f23SChristian Brueffer.Fx 6.0 . 93f8cd5f23SChristian Brueffer.Sh AUTHORS 94f8cd5f23SChristian Brueffer.An -nosplit 95f8cd5f23SChristian Brueffer.Nm 96f8cd5f23SChristian Bruefferwas written by 97f8cd5f23SChristian Brueffer.An Bosko Milekic Aq bmilekic@FreeBSD.org . 98f8cd5f23SChristian BruefferThis manual page was written by 99f8cd5f23SChristian Brueffer.An Christian Brueffer Aq brueffer@FreeBSD.org . 100f8cd5f23SChristian Brueffer.Sh BUGS 101f8cd5f23SChristian BruefferCurrently, it is not possible to override UMA 102f8cd5f23SChristian Brueffer.Xr zone 9 103f8cd5f23SChristian Bruefferallocations. 104