mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-10-31 18:09:19 +00:00
kmemleak: Introduce a default off mode for kmemleak
Introduce a new DEBUG_KMEMLEAK_DEFAULT_OFF config parameter that allows kmemleak to be disabled by default, but enabled on the command line via: kmemleak=on. Although a reboot is required to turn it on, its still useful to not require a re-compile. Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
This commit is contained in:
parent
a7686a45c0
commit
ab0155a22a
2 changed files with 20 additions and 1 deletions
|
@ -400,6 +400,13 @@ config DEBUG_KMEMLEAK_TEST
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
config DEBUG_KMEMLEAK_DEFAULT_OFF
|
||||||
|
bool "Default kmemleak to off"
|
||||||
|
depends on DEBUG_KMEMLEAK
|
||||||
|
help
|
||||||
|
Say Y here to disable kmemleak by default. It can then be enabled
|
||||||
|
on the command line via kmemleak=on.
|
||||||
|
|
||||||
config DEBUG_PREEMPT
|
config DEBUG_PREEMPT
|
||||||
bool "Debug preemptible kernel"
|
bool "Debug preemptible kernel"
|
||||||
depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
|
depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
|
||||||
|
|
|
@ -211,6 +211,9 @@ static signed long jiffies_scan_wait;
|
||||||
static int kmemleak_stack_scan = 1;
|
static int kmemleak_stack_scan = 1;
|
||||||
/* protects the memory scanning, parameters and debug/kmemleak file access */
|
/* protects the memory scanning, parameters and debug/kmemleak file access */
|
||||||
static DEFINE_MUTEX(scan_mutex);
|
static DEFINE_MUTEX(scan_mutex);
|
||||||
|
/* setting kmemleak=on, will set this var, skipping the disable */
|
||||||
|
static int kmemleak_skip_disable;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Early object allocation/freeing logging. Kmemleak is initialized after the
|
* Early object allocation/freeing logging. Kmemleak is initialized after the
|
||||||
|
@ -1604,7 +1607,9 @@ static int kmemleak_boot_config(char *str)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (strcmp(str, "off") == 0)
|
if (strcmp(str, "off") == 0)
|
||||||
kmemleak_disable();
|
kmemleak_disable();
|
||||||
else if (strcmp(str, "on") != 0)
|
else if (strcmp(str, "on") == 0)
|
||||||
|
kmemleak_skip_disable = 1;
|
||||||
|
else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1618,6 +1623,13 @@ void __init kmemleak_init(void)
|
||||||
int i;
|
int i;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF
|
||||||
|
if (!kmemleak_skip_disable) {
|
||||||
|
kmemleak_disable();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
jiffies_min_age = msecs_to_jiffies(MSECS_MIN_AGE);
|
jiffies_min_age = msecs_to_jiffies(MSECS_MIN_AGE);
|
||||||
jiffies_scan_wait = msecs_to_jiffies(SECS_SCAN_WAIT * 1000);
|
jiffies_scan_wait = msecs_to_jiffies(SECS_SCAN_WAIT * 1000);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue