kasan: fix panic issue when open kasan with vmap stack [1/1]

PD#SWPL-10141

Problem:
When open kasan with vmap stack on ARM32 platform, there
will be a panic issue which pc is running out of range:
[ 56.726530@2] PC is at 0x50
[ 56.729301@2] LR is at 0x0

Solution:
Close kasan when open vmap stack on ARM32

Verify:
TL1

Change-Id: Id82eb27543e8eade86b281cde9e160b8bf4e7878
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
This commit is contained in:
Tao Zeng
2019-06-24 18:39:48 +08:00
committed by Luke Go
parent 52ea200edd
commit cd6b4477ed
3 changed files with 10 additions and 16 deletions

View File

@@ -33,11 +33,6 @@
#ifdef CONFIG_MMU
#ifdef CONFIG_AMLOGIC_VMAP
/*
* TASK_SIZE - the maximum size of a user space task.
* TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
*/
#ifdef CONFIG_AMLOGIC_KASAN32
/*
* if open AMLOGIC_KASAN32, PAGE_OFFSET is set to 0xD0000000
@@ -45,18 +40,19 @@
* can be 0xC0000000 and total 256mb space for vmalloc
*/
#define VMALLOC_START (UL(CONFIG_PAGE_OFFSET) - UL(SZ_256M))
#define TASK_SIZE (VMALLOC_START - UL(SZ_128M))
#define KMEM_END (0xffa00000UL)
#define TASK_SIZE (VMALLOC_START - UL(SZ_128M))
#else /* CONFIG_AMLOGIC_KASAN32 */
#define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(SZ_64M))
#endif
#else
/*
* TASK_SIZE - the maximum size of a user space task.
* TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
*/
#ifdef CONFIG_AMLOGIC_VMAP
#define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(SZ_64M))
#else
#define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(SZ_16M))
#endif /* CONFIG_AMLOGIC_VMAP */
#endif
#define TASK_UNMAPPED_BASE ALIGN(TASK_SIZE / 3, SZ_16M)
/*
@@ -64,17 +60,11 @@
*/
#define TASK_SIZE_26 (UL(1) << 26)
#ifdef CONFIG_AMLOGIC_VMAP
#ifndef CONFIG_THUMB2_KERNEL
#ifdef CONFIG_AMLOGIC_KASAN32
#define MODULES_VADDR (PAGE_OFFSET - SZ_16M + SZ_4M + SZ_2M)
#else
#elif defined(CONFIG_AMLOGIC_VMAP)
#define MODULES_VADDR (PAGE_OFFSET - SZ_64M)
#endif /* CONFIG_AMLOGIC_KASAN32 */
#else
#define MODULES_VADDR (PAGE_OFFSET - SZ_8M)
#endif
#else /* CONFIG_AMLOGIC_VMAP */
/*
* The module space lives between the addresses given by TASK_SIZE
* and PAGE_OFFSET - it must be within 32MB of the kernel text.

View File

@@ -96,3 +96,6 @@ endif
obj-$(CONFIG_HAVE_ARM_SMCCC) += smccc-call.o
extra-y := $(head-y) vmlinux.lds
KASAN_SANITIZE_process.o := n
KASAN_SANITIZE_unwind.o := n

View File

@@ -55,6 +55,7 @@ config AMLOGIC_KASAN32
config AMLOGIC_VMAP
bool "Amlogic kernel stack"
depends on AMLOGIC_MEMORY_EXTEND
depends on ARM64 || !KASAN
default y
help
This config is used to enable amlogic kernel stack