Commit b353756b authored by Vincent Whitchurch's avatar Vincent Whitchurch Committed by Linus Torvalds

kmemleak: always register debugfs file

If kmemleak built in to the kernel, but is disabled by default, the
debugfs file is never registered.  Because of this, it is not possible
to find out if the kernel is built with kmemleak support by checking for
the presence of this file.  To allow this, always register the file.

After this patch, if the file doesn't exist, kmemleak is not available
in the kernel.  If writing "scan" or any other value than "clear" to
this file results in EBUSY, then kmemleak is available but is disabled
by default and can be activated via the kernel command line.

Catalin: "that's also consistent with a late disabling of kmemleak when
the debugfs entry sticks around."

Link: http://lkml.kernel.org/r/20180824131220.19176-1-vincent.whitchurch@axis.comSigned-off-by: default avatarVincent Whitchurch <vincent.whitchurch@axis.com>
Acked-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 1ed0cc5a
...@@ -2097,6 +2097,11 @@ static int __init kmemleak_late_init(void) ...@@ -2097,6 +2097,11 @@ static int __init kmemleak_late_init(void)
kmemleak_initialized = 1; kmemleak_initialized = 1;
dentry = debugfs_create_file("kmemleak", 0644, NULL, NULL,
&kmemleak_fops);
if (!dentry)
pr_warn("Failed to create the debugfs kmemleak file\n");
if (kmemleak_error) { if (kmemleak_error) {
/* /*
* Some error occurred and kmemleak was disabled. There is a * Some error occurred and kmemleak was disabled. There is a
...@@ -2108,10 +2113,6 @@ static int __init kmemleak_late_init(void) ...@@ -2108,10 +2113,6 @@ static int __init kmemleak_late_init(void)
return -ENOMEM; return -ENOMEM;
} }
dentry = debugfs_create_file("kmemleak", 0644, NULL, NULL,
&kmemleak_fops);
if (!dentry)
pr_warn("Failed to create the debugfs kmemleak file\n");
mutex_lock(&scan_mutex); mutex_lock(&scan_mutex);
start_scan_thread(); start_scan_thread();
mutex_unlock(&scan_mutex); mutex_unlock(&scan_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment