aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/kmemleak.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/kmemleak.txt')
-rw-r--r--Documentation/kmemleak.txt54
1 files changed, 47 insertions, 7 deletions
diff --git a/Documentation/kmemleak.txt b/Documentation/kmemleak.txt
index 0112da3b9ab8..34f6638aa5ac 100644
--- a/Documentation/kmemleak.txt
+++ b/Documentation/kmemleak.txt
@@ -16,13 +16,24 @@ Usage
16----- 16-----
17 17
18CONFIG_DEBUG_KMEMLEAK in "Kernel hacking" has to be enabled. A kernel 18CONFIG_DEBUG_KMEMLEAK in "Kernel hacking" has to be enabled. A kernel
19thread scans the memory every 10 minutes (by default) and prints any new 19thread scans the memory every 10 minutes (by default) and prints the
20unreferenced objects found. To trigger an intermediate scan and display 20number of new unreferenced objects found. To display the details of all
21all the possible memory leaks: 21the possible memory leaks:
22 22
23 # mount -t debugfs nodev /sys/kernel/debug/ 23 # mount -t debugfs nodev /sys/kernel/debug/
24 # cat /sys/kernel/debug/kmemleak 24 # cat /sys/kernel/debug/kmemleak
25 25
26To trigger an intermediate memory scan:
27
28 # echo scan > /sys/kernel/debug/kmemleak
29
30To clear the list of all current possible memory leaks:
31
32 # echo clear > /sys/kernel/debug/kmemleak
33
34New leaks will then come up upon reading /sys/kernel/debug/kmemleak
35again.
36
26Note that the orphan objects are listed in the order they were allocated 37Note that the orphan objects are listed in the order they were allocated
27and one object at the beginning of the list may cause other subsequent 38and one object at the beginning of the list may cause other subsequent
28objects to be reported as orphan. 39objects to be reported as orphan.
@@ -31,16 +42,24 @@ Memory scanning parameters can be modified at run-time by writing to the
31/sys/kernel/debug/kmemleak file. The following parameters are supported: 42/sys/kernel/debug/kmemleak file. The following parameters are supported:
32 43
33 off - disable kmemleak (irreversible) 44 off - disable kmemleak (irreversible)
34 stack=on - enable the task stacks scanning 45 stack=on - enable the task stacks scanning (default)
35 stack=off - disable the tasks stacks scanning 46 stack=off - disable the tasks stacks scanning
36 scan=on - start the automatic memory scanning thread 47 scan=on - start the automatic memory scanning thread (default)
37 scan=off - stop the automatic memory scanning thread 48 scan=off - stop the automatic memory scanning thread
38 scan=<secs> - set the automatic memory scanning period in seconds (0 49 scan=<secs> - set the automatic memory scanning period in seconds
39 to disable it) 50 (default 600, 0 to stop the automatic scanning)
51 scan - trigger a memory scan
52 clear - clear list of current memory leak suspects, done by
53 marking all current reported unreferenced objects grey
54 dump=<addr> - dump information about the object found at <addr>
40 55
41Kmemleak can also be disabled at boot-time by passing "kmemleak=off" on 56Kmemleak can also be disabled at boot-time by passing "kmemleak=off" on
42the kernel command line. 57the kernel command line.
43 58
59Memory may be allocated or freed before kmemleak is initialised and
60these actions are stored in an early log buffer. The size of this buffer
61is configured via the CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE option.
62
44Basic Algorithm 63Basic Algorithm
45--------------- 64---------------
46 65
@@ -77,6 +96,27 @@ avoid this, kmemleak can also store the number of values pointing to an
77address inside the block address range that need to be found so that the 96address inside the block address range that need to be found so that the
78block is not considered a leak. One example is __vmalloc(). 97block is not considered a leak. One example is __vmalloc().
79 98
99Testing specific sections with kmemleak
100---------------------------------------
101
102Upon initial bootup your /sys/kernel/debug/kmemleak output page may be
103quite extensive. This can also be the case if you have very buggy code
104when doing development. To work around these situations you can use the
105'clear' command to clear all reported unreferenced objects from the
106/sys/kernel/debug/kmemleak output. By issuing a 'scan' after a 'clear'
107you can find new unreferenced objects; this should help with testing
108specific sections of code.
109
110To test a critical section on demand with a clean kmemleak do:
111
112 # echo clear > /sys/kernel/debug/kmemleak
113 ... test your kernel or modules ...
114 # echo scan > /sys/kernel/debug/kmemleak
115
116Then as usual to get your report with:
117
118 # cat /sys/kernel/debug/kmemleak
119
80Kmemleak API 120Kmemleak API
81------------ 121------------
82 122