diff options
-rw-r--r-- | mm/hwpoison-inject.c | 5 | ||||
-rw-r--r-- | mm/internal.h | 1 | ||||
-rw-r--r-- | mm/memory-failure.c | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/mm/hwpoison-inject.c b/mm/hwpoison-inject.c index c838735ac31d..c597f46ac18a 100644 --- a/mm/hwpoison-inject.c +++ b/mm/hwpoison-inject.c | |||
@@ -92,6 +92,11 @@ static int pfn_inject_init(void) | |||
92 | if (!dentry) | 92 | if (!dentry) |
93 | goto fail; | 93 | goto fail; |
94 | 94 | ||
95 | dentry = debugfs_create_u32("corrupt-filter-enable", 0600, | ||
96 | hwpoison_dir, &hwpoison_filter_enable); | ||
97 | if (!dentry) | ||
98 | goto fail; | ||
99 | |||
95 | dentry = debugfs_create_u32("corrupt-filter-dev-major", 0600, | 100 | dentry = debugfs_create_u32("corrupt-filter-dev-major", 0600, |
96 | hwpoison_dir, &hwpoison_filter_dev_major); | 101 | hwpoison_dir, &hwpoison_filter_dev_major); |
97 | if (!dentry) | 102 | if (!dentry) |
diff --git a/mm/internal.h b/mm/internal.h index 5a6761bea6a6..6a697bb97fc5 100644 --- a/mm/internal.h +++ b/mm/internal.h | |||
@@ -258,3 +258,4 @@ extern u32 hwpoison_filter_dev_minor; | |||
258 | extern u64 hwpoison_filter_flags_mask; | 258 | extern u64 hwpoison_filter_flags_mask; |
259 | extern u64 hwpoison_filter_flags_value; | 259 | extern u64 hwpoison_filter_flags_value; |
260 | extern u64 hwpoison_filter_memcg; | 260 | extern u64 hwpoison_filter_memcg; |
261 | extern u32 hwpoison_filter_enable; | ||
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 117ef1598469..2d5f1223bf4d 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -49,10 +49,12 @@ int sysctl_memory_failure_recovery __read_mostly = 1; | |||
49 | 49 | ||
50 | atomic_long_t mce_bad_pages __read_mostly = ATOMIC_LONG_INIT(0); | 50 | atomic_long_t mce_bad_pages __read_mostly = ATOMIC_LONG_INIT(0); |
51 | 51 | ||
52 | u32 hwpoison_filter_enable = 0; | ||
52 | u32 hwpoison_filter_dev_major = ~0U; | 53 | u32 hwpoison_filter_dev_major = ~0U; |
53 | u32 hwpoison_filter_dev_minor = ~0U; | 54 | u32 hwpoison_filter_dev_minor = ~0U; |
54 | u64 hwpoison_filter_flags_mask; | 55 | u64 hwpoison_filter_flags_mask; |
55 | u64 hwpoison_filter_flags_value; | 56 | u64 hwpoison_filter_flags_value; |
57 | EXPORT_SYMBOL_GPL(hwpoison_filter_enable); | ||
56 | EXPORT_SYMBOL_GPL(hwpoison_filter_dev_major); | 58 | EXPORT_SYMBOL_GPL(hwpoison_filter_dev_major); |
57 | EXPORT_SYMBOL_GPL(hwpoison_filter_dev_minor); | 59 | EXPORT_SYMBOL_GPL(hwpoison_filter_dev_minor); |
58 | EXPORT_SYMBOL_GPL(hwpoison_filter_flags_mask); | 60 | EXPORT_SYMBOL_GPL(hwpoison_filter_flags_mask); |
@@ -145,6 +147,9 @@ static int hwpoison_filter_task(struct page *p) { return 0; } | |||
145 | 147 | ||
146 | int hwpoison_filter(struct page *p) | 148 | int hwpoison_filter(struct page *p) |
147 | { | 149 | { |
150 | if (!hwpoison_filter_enable) | ||
151 | return 0; | ||
152 | |||
148 | if (hwpoison_filter_dev(p)) | 153 | if (hwpoison_filter_dev(p)) |
149 | return -EINVAL; | 154 | return -EINVAL; |
150 | 155 | ||