aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mm/debug.c
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2018-11-06 13:57:02 +0100
committerJiri Kosina <jkosina@suse.cz>2018-11-06 13:57:02 +0100
commit0c7244209588630a9b45e52490ef1390e04499a6 (patch)
treed60f5610f9b36ff05ed5202396c811628bacdb61 /mm/debug.c
parentHID: i2c-hid: add Direkt-Tek DTLAPY133-1 to descriptor override (diff)
parentMerge tag 'platform-drivers-x86-v4.20-1' of git://git.infradead.org/linux-platform-drivers-x86 (diff)
downloadwireguard-linux-0c7244209588630a9b45e52490ef1390e04499a6.tar.xz
wireguard-linux-0c7244209588630a9b45e52490ef1390e04499a6.zip
Merge branch 'master' into for-4.20/upstream-fixes
Pull in a merge commit that brought in 3b692c55e58d ("HID: asus: only support backlight when it's not driven by WMI") so that fixup could be applied on top of it.
Diffstat (limited to 'mm/debug.c')
-rw-r--r--mm/debug.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/mm/debug.c b/mm/debug.c
index bd10aad8539a..cdacba12e09a 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -13,6 +13,7 @@
#include <trace/events/mmflags.h>
#include <linux/migrate.h>
#include <linux/page_owner.h>
+#include <linux/ctype.h>
#include "internal.h"
@@ -175,4 +176,49 @@ void dump_mm(const struct mm_struct *mm)
);
}
+static bool page_init_poisoning __read_mostly = true;
+
+static int __init setup_vm_debug(char *str)
+{
+ bool __page_init_poisoning = true;
+
+ /*
+ * Calling vm_debug with no arguments is equivalent to requesting
+ * to enable all debugging options we can control.
+ */
+ if (*str++ != '=' || !*str)
+ goto out;
+
+ __page_init_poisoning = false;
+ if (*str == '-')
+ goto out;
+
+ while (*str) {
+ switch (tolower(*str)) {
+ case'p':
+ __page_init_poisoning = true;
+ break;
+ default:
+ pr_err("vm_debug option '%c' unknown. skipped\n",
+ *str);
+ }
+
+ str++;
+ }
+out:
+ if (page_init_poisoning && !__page_init_poisoning)
+ pr_warn("Page struct poisoning disabled by kernel command line option 'vm_debug'\n");
+
+ page_init_poisoning = __page_init_poisoning;
+
+ return 1;
+}
+__setup("vm_debug", setup_vm_debug);
+
+void page_init_poison(struct page *page, size_t size)
+{
+ if (page_init_poisoning)
+ memset(page, PAGE_POISON_PATTERN, size);
+}
+EXPORT_SYMBOL_GPL(page_init_poison);
#endif /* CONFIG_DEBUG_VM */