diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 4fbe483851f8..0f29b39eca30 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -544,6 +544,15 @@ config DEBUG_KMEMLEAK_DEFAULT_OFF Say Y here to disable kmemleak by default. It can then be enabled on the command line via kmemleak=on. +config DEBUG_TASK_STACK_SCAN_OFF + bool "Disable kmemleak task stack scan by default" + depends on DEBUG_KMEMLEAK + help + Say Y here to disable kmemleak task stack scan by default + at compile time. It can be enabled later if required by + writing to the debugfs entry : + echo "stack=on" > /sys/kernel/debug/kmemleak. + config DEBUG_PREEMPT bool "Debug preemptible kernel" depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT diff --git a/mm/kmemleak.c b/mm/kmemleak.c index c8d7f3110fd0..1e903b22bc42 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -212,8 +212,18 @@ static unsigned long jiffies_min_age; static unsigned long jiffies_last_scan; /* delay between automatic memory scannings */ static signed long jiffies_scan_wait; -/* enables or disables the task stacks scanning */ + +/* Enables or disables the task stacks scanning. + * Set to 1 if at compile time we want it enabled. + * Else set to 0 to have it disabled by default. + * This can be enabled by writing to "stack=on" using + * kmemleak debugfs entry.*/ +#ifdef CONFIG_DEBUG_TASK_STACK_SCAN_OFF +static int kmemleak_stack_scan; +#else static int kmemleak_stack_scan = 1; +#endif + /* protects the memory scanning, parameters and debug/kmemleak file access */ static DEFINE_MUTEX(scan_mutex); /* setting kmemleak=on, will set this var, skipping the disable */