mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
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: Sri Krishna chowdary <schowdary@nvidia.com> Signed-off-by: Sachin Nikam <snikam@nvidia.com> Signed-off-by: Prateek <prpatel@nvidia.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
3c0c12cc8f
commit
d53ce04227
@@ -593,6 +593,21 @@ config DEBUG_KMEMLEAK_DEFAULT_OFF
|
|||||||
Say Y here to disable kmemleak by default. It can then be enabled
|
Say Y here to disable kmemleak by default. It can then be enabled
|
||||||
on the command line via kmemleak=on.
|
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
|
config DEBUG_STACK_USAGE
|
||||||
bool "Stack utilization instrumentation"
|
bool "Stack utilization instrumentation"
|
||||||
depends on DEBUG_KERNEL && !IA64
|
depends on DEBUG_KERNEL && !IA64
|
||||||
|
@@ -1650,7 +1650,7 @@ static void kmemleak_scan(void)
|
|||||||
*/
|
*/
|
||||||
static int kmemleak_scan_thread(void *arg)
|
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");
|
pr_info("Automatic memory scanning thread started\n");
|
||||||
set_user_nice(current, 10);
|
set_user_nice(current, 10);
|
||||||
@@ -2144,9 +2144,11 @@ static int __init kmemleak_late_init(void)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&scan_mutex);
|
if (IS_ENABLED(CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN)) {
|
||||||
start_scan_thread();
|
mutex_lock(&scan_mutex);
|
||||||
mutex_unlock(&scan_mutex);
|
start_scan_thread();
|
||||||
|
mutex_unlock(&scan_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
pr_info("Kernel memory leak detector initialized\n");
|
pr_info("Kernel memory leak detector initialized\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user