|
@@ -211,6 +211,9 @@ static signed long jiffies_scan_wait;
|
|
|
static int kmemleak_stack_scan = 1;
|
|
|
/* 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 */
|
|
|
+static int kmemleak_skip_disable;
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* Early object allocation/freeing logging. Kmemleak is initialized after the
|
|
@@ -1604,7 +1607,9 @@ static int kmemleak_boot_config(char *str)
|
|
|
return -EINVAL;
|
|
|
if (strcmp(str, "off") == 0)
|
|
|
kmemleak_disable();
|
|
|
- else if (strcmp(str, "on") != 0)
|
|
|
+ else if (strcmp(str, "on") == 0)
|
|
|
+ kmemleak_skip_disable = 1;
|
|
|
+ else
|
|
|
return -EINVAL;
|
|
|
return 0;
|
|
|
}
|
|
@@ -1618,6 +1623,13 @@ void __init kmemleak_init(void)
|
|
|
int i;
|
|
|
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_scan_wait = msecs_to_jiffies(SECS_SCAN_WAIT * 1000);
|
|
|
|