Skip to contentSkip to conversation

x86/kasan, mm changes for v4.3

GIT PULL Ingo Molnar 1 participant 1 message Aug 31, 2015

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

Linus,

Please pull the latest mm-kasan-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git mm-kasan-for-linus

# HEAD: 69786cdb379bbc6eab14cf2393c1abd879316e85 x86/kasan, mm: Introduce generic kasan_populate_zero_shadow()

These are two KASAN changes that factor out (and generalize) x86 specific KASAN code from x86 to mm/.

Thanks,

Ingo

------------------>
Andrey Ryabinin (2):
x86/kasan: Define KASAN_SHADOW_OFFSET per architecture x86/kasan, mm: Introduce generic kasan_populate_zero_shadow()

 arch/x86/include/asm/kasan.h |   3 +
 arch/x86/mm/kasan_init_64.c  | 123 ++--------------------------------
 include/linux/kasan.h        |  10 ++-
 mm/kasan/Makefile            |   2 +-
 mm/kasan/kasan_init.c        | 152 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 170 insertions(+), 120 deletions(-)
 create mode 100644 mm/kasan/kasan_init.c
arch/x86/include/asm/kasan.h +3 -0
index 74a2a8dc9908..1410b567ecde 100644
@@ -1,6 +1,9 @@
 #ifndef _ASM_X86_KASAN_H
 #define _ASM_X86_KASAN_H
 
+#include <linux/const.h>
+#define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
+
 /*
  * Compiler uses shadow offset assuming that addresses start
  * from 0. Kernel addresses don't start from 0, so shadow
arch/x86/mm/kasan_init_64.c +5 -118

152 lines not on this page · raw message

include/linux/kasan.h +9 -1
index 5486d777b706..4b9f85c963d0 100644
@@ -10,11 +10,19 @@ struct vm_struct;
 #ifdef CONFIG_KASAN
 
 #define KASAN_SHADOW_SCALE_SHIFT 3
-#define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
 
 #include <asm/kasan.h>
+#include <asm/pgtable.h>
 #include <linux/sched.h>
 
+extern unsigned char kasan_zero_page[PAGE_SIZE];
+extern pte_t kasan_zero_pte[PTRS_PER_PTE];
+extern pmd_t kasan_zero_pmd[PTRS_PER_PMD];
+extern pud_t kasan_zero_pud[PTRS_PER_PUD];
+
+void kasan_populate_zero_shadow(const void *shadow_start,
+				const void *shadow_end);
+
 static inline void *kasan_mem_to_shadow(const void *addr)
 {
 	return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT)
mm/kasan/Makefile +1 -1
index bd837b8c2f41..64710148941e 100644
@@ -5,4 +5,4 @@ CFLAGS_REMOVE_kasan.o = -pg
 # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
 CFLAGS_kasan.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector)
 
-obj-y := kasan.o report.o
+obj-y := kasan.o report.o kasan_init.o
mm/kasan/kasan_init.c new file +152 -0

152 lines not on this page · raw message