diff options
author | Vegard Nossum <vegard.nossum@gmail.com> | 2008-04-03 18:51:41 -0400 |
---|---|---|
committer | Vegard Nossum <vegard.nossum@gmail.com> | 2009-06-13 09:37:30 -0400 |
commit | dfec072ecd35ba6ecad2d51dde325253ac9a2936 (patch) | |
tree | ccf682a631ef8edc0675d68d004bc3a80b34b648 /kernel | |
parent | e594c8de3bd4e7732ed3340fb01e18ec94b12df2 (diff) |
kmemcheck: add the kmemcheck core
General description: kmemcheck is a patch to the linux kernel that
detects use of uninitialized memory. It does this by trapping every
read and write to memory that was allocated dynamically (e.g. using
kmalloc()). If a memory address is read that has not previously been
written to, a message is printed to the kernel log.
Thanks to Andi Kleen for the set_memory_4k() solution.
Andrew Morton suggested documenting the shadow member of struct page.
Signed-off-by: Vegard Nossum <vegardno@ifi.uio.no>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
[export kmemcheck_mark_initialized]
[build fix for setup_max_cpus]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
[rebased for mainline inclusion]
Signed-off-by: Vegard Nossum <vegardno@ifi.uio.no>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sysctl.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index ce664f98e3fb..9ef80bba3509 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/security.h> | 27 | #include <linux/security.h> |
28 | #include <linux/ctype.h> | 28 | #include <linux/ctype.h> |
29 | #include <linux/utsname.h> | 29 | #include <linux/utsname.h> |
30 | #include <linux/kmemcheck.h> | ||
30 | #include <linux/smp_lock.h> | 31 | #include <linux/smp_lock.h> |
31 | #include <linux/fs.h> | 32 | #include <linux/fs.h> |
32 | #include <linux/init.h> | 33 | #include <linux/init.h> |
@@ -959,6 +960,17 @@ static struct ctl_table kern_table[] = { | |||
959 | .proc_handler = &proc_dointvec, | 960 | .proc_handler = &proc_dointvec, |
960 | }, | 961 | }, |
961 | #endif | 962 | #endif |
963 | #ifdef CONFIG_KMEMCHECK | ||
964 | { | ||
965 | .ctl_name = CTL_UNNUMBERED, | ||
966 | .procname = "kmemcheck", | ||
967 | .data = &kmemcheck_enabled, | ||
968 | .maxlen = sizeof(int), | ||
969 | .mode = 0644, | ||
970 | .proc_handler = &proc_dointvec, | ||
971 | }, | ||
972 | #endif | ||
973 | |||
962 | /* | 974 | /* |
963 | * NOTE: do not add new entries to this table unless you have read | 975 | * NOTE: do not add new entries to this table unless you have read |
964 | * Documentation/sysctl/ctl_unnumbered.txt | 976 | * Documentation/sysctl/ctl_unnumbered.txt |