summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-04-28 11:12:19 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-28 11:12:18 -0700
commit81abee4ace68b96e4ba4928a75132343c2d0c2cd (patch)
treeccbfa6ae8719e0992e7ebbf7f0094a82fe8404d8 /mm
parentffee4e8638083f3a02f40e046d2c7a9af7dffa59 (diff)
parenta58123672c958f7d653d227a9cad4a31a9c5d925 (diff)
Merge "Revert "arm64: Change cpu_resume() to enable mmu early ...""
Diffstat (limited to 'mm')
-rw-r--r--mm/kasan/kasan.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c
index bc0a8d8b8f42..1ad20ade8c91 100644
--- a/mm/kasan/kasan.c
+++ b/mm/kasan/kasan.c
@@ -20,6 +20,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kmemleak.h>
+#include <linux/linkage.h>
#include <linux/memblock.h>
#include <linux/memory.h>
#include <linux/mm.h>
@@ -60,6 +61,25 @@ void kasan_unpoison_shadow(const void *address, size_t size)
}
}
+static void __kasan_unpoison_stack(struct task_struct *task, void *sp)
+{
+ void *base = task_stack_page(task);
+ size_t size = sp - base;
+
+ kasan_unpoison_shadow(base, size);
+}
+
+/* Unpoison the entire stack for a task. */
+void kasan_unpoison_task_stack(struct task_struct *task)
+{
+ __kasan_unpoison_stack(task, task_stack_page(task) + THREAD_SIZE);
+}
+
+/* Unpoison the stack for the current task beyond a watermark sp value. */
+asmlinkage void kasan_unpoison_remaining_stack(void *sp)
+{
+ __kasan_unpoison_stack(current, sp);
+}
/*
* All functions below always inlined so compiler could