aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2009-06-25 05:16:11 -0400
committerCatalin Marinas <catalin.marinas@arm.com>2009-06-25 05:16:13 -0400
commita9d9058abab4ac17b79d500506e6c74bd16cecdc (patch)
tree3b12a8f093431979b3e26e04f115b4ce942ce363 /mm
parent28d0325ce6e0a52f53d8af687e6427fee59004d3 (diff)
kmemleak: Allow the early log buffer to be configurable.
(feature suggested by Sergey Senozhatsky) Kmemleak needs to track all the memory allocations but some of these happen before kmemleak is initialised. These are stored in an internal buffer which may be exceeded in some kernel configurations. This patch adds a configuration option with a default value of 400 and also removes the stack dump when the early log buffer is exceeded. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Sergey Senozhatsky <sergey.senozhatsky@mail.by>
Diffstat (limited to 'mm')
-rw-r--r--mm/kmemleak.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index c96f2c8700aa..17096d1b59b2 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -235,7 +235,7 @@ struct early_log {
235}; 235};
236 236
237/* early logging buffer and current position */ 237/* early logging buffer and current position */
238static struct early_log early_log[200]; 238static struct early_log early_log[CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE];
239static int crt_early_log; 239static int crt_early_log;
240 240
241static void kmemleak_disable(void); 241static void kmemleak_disable(void);
@@ -696,7 +696,8 @@ static void log_early(int op_type, const void *ptr, size_t size,
696 struct early_log *log; 696 struct early_log *log;
697 697
698 if (crt_early_log >= ARRAY_SIZE(early_log)) { 698 if (crt_early_log >= ARRAY_SIZE(early_log)) {
699 kmemleak_stop("Early log buffer exceeded\n"); 699 pr_warning("Early log buffer exceeded\n");
700 kmemleak_disable();
700 return; 701 return;
701 } 702 }
702 703