Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d53ce042 authored by Sri Krishna chowdary's avatar Sri Krishna chowdary Committed by Linus Torvalds
Browse files

kmemleak: add config to select auto scan

Kmemleak scan can be cpu intensive and can stall user tasks at times.  To
prevent this, add config DEBUG_KMEMLEAK_AUTO_SCAN to enable/disable auto
scan on boot up.  Also protect first_run with DEBUG_KMEMLEAK_AUTO_SCAN as
this is meant for only first automatic scan.

Link: http://lkml.kernel.org/r/1540231723-7087-1-git-send-email-prpatel@nvidia.com


Signed-off-by: default avatarSri Krishna chowdary <schowdary@nvidia.com>
Signed-off-by: default avatarSachin Nikam <snikam@nvidia.com>
Signed-off-by: default avatarPrateek <prpatel@nvidia.com>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3c0c12cc
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -593,6 +593,21 @@ 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_KMEMLEAK_AUTO_SCAN
	bool "Enable kmemleak auto scan thread on boot up"
	default y
	depends on DEBUG_KMEMLEAK
	help
	  Depending on the cpu, kmemleak scan may be cpu intensive and can
	  stall user tasks at times. This option enables/disables automatic
	  kmemleak scan at boot up.

	  Say N here to disable kmemleak auto scan thread to stop automatic
	  scanning. Disabling this option disables automatic reporting of
	  memory leaks.

	  If unsure, say Y.

config DEBUG_STACK_USAGE
	bool "Stack utilization instrumentation"
	depends on DEBUG_KERNEL && !IA64
+6 −4
Original line number Diff line number Diff line
@@ -1650,7 +1650,7 @@ static void kmemleak_scan(void)
 */
static int kmemleak_scan_thread(void *arg)
{
	static int first_run = 1;
	static int first_run = IS_ENABLED(CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN);

	pr_info("Automatic memory scanning thread started\n");
	set_user_nice(current, 10);
@@ -2144,9 +2144,11 @@ static int __init kmemleak_late_init(void)
		return -ENOMEM;
	}

	if (IS_ENABLED(CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN)) {
		mutex_lock(&scan_mutex);
		start_scan_thread();
		mutex_unlock(&scan_mutex);
	}

	pr_info("Kernel memory leak detector initialized\n");