aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorAndrey Ryabinin <a.ryabinin@samsung.com>2015-02-13 17:39:21 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-02-14 00:21:40 -0500
commit786a8959912eb94fc2381c2ae487a96ce55dabca (patch)
treeb098e2dd7be09ba79e6219ca5a00b0fe785510d5 /mm
parent0b24becc810dc3be6e3f94103a866f214c282394 (diff)
kasan: disable memory hotplug
Currently memory hotplug won't work with KASan. As we don't have shadow for hotplugged memory, kernel will crash on the first access to it. To make this work we will need to allocate shadow for new memory. At some future point proper memory hotplug support will be implemented. Until then, print a warning at startup and disable memory hot-add. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Konstantin Serebryany <kcc@google.com> Cc: Dmitry Chernenkov <dmitryc@google.com> Signed-off-by: Andrey Konovalov <adech.fo@gmail.com> Cc: Yuri Gribov <tetra2005@gmail.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Sasha Levin <sasha.levin@oracle.com> Cc: Christoph Lameter <cl@linux.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/kasan/kasan.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c
index 6dc1aa7cefcc..def81104772f 100644
--- a/mm/kasan/kasan.c
+++ b/mm/kasan/kasan.c
@@ -20,6 +20,7 @@
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/memblock.h> 22#include <linux/memblock.h>
23#include <linux/memory.h>
23#include <linux/mm.h> 24#include <linux/mm.h>
24#include <linux/printk.h> 25#include <linux/printk.h>
25#include <linux/sched.h> 26#include <linux/sched.h>
@@ -300,3 +301,23 @@ EXPORT_SYMBOL(__asan_storeN_noabort);
300/* to shut up compiler complaints */ 301/* to shut up compiler complaints */
301void __asan_handle_no_return(void) {} 302void __asan_handle_no_return(void) {}
302EXPORT_SYMBOL(__asan_handle_no_return); 303EXPORT_SYMBOL(__asan_handle_no_return);
304
305#ifdef CONFIG_MEMORY_HOTPLUG
306static int kasan_mem_notifier(struct notifier_block *nb,
307 unsigned long action, void *data)
308{
309 return (action == MEM_GOING_ONLINE) ? NOTIFY_BAD : NOTIFY_OK;
310}
311
312static int __init kasan_memhotplug_init(void)
313{
314 pr_err("WARNING: KASan doesn't support memory hot-add\n");
315 pr_err("Memory hot-add will be disabled\n");
316
317 hotplug_memory_notifier(kasan_mem_notifier, 0);
318
319 return 0;
320}
321
322module_init(kasan_memhotplug_init);
323#endif