diff options
author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-04-28 11:12:19 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-04-28 11:12:18 -0700 |
commit | 81abee4ace68b96e4ba4928a75132343c2d0c2cd (patch) | |
tree | ccbfa6ae8719e0992e7ebbf7f0094a82fe8404d8 /mm | |
parent | ffee4e8638083f3a02f40e046d2c7a9af7dffa59 (diff) | |
parent | a58123672c958f7d653d227a9cad4a31a9c5d925 (diff) |
Merge "Revert "arm64: Change cpu_resume() to enable mmu early ...""
Diffstat (limited to 'mm')
-rw-r--r-- | mm/kasan/kasan.c | 20 |
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 |