mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user