From 376874d88b3cf8f9e8a6ddf05e9cb1b9ccf76122 Mon Sep 17 00:00:00 2001 From: Ville Juven Date: Tue, 30 May 2023 16:55:54 +0300 Subject: [PATCH] arch/risc-v: Add maximum user addrenv size and end boundary Also in riscv_uservaddr() check the end boundary --- arch/risc-v/src/common/addrenv.h | 8 ++++++++ arch/risc-v/src/common/pgalloc.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/risc-v/src/common/addrenv.h b/arch/risc-v/src/common/addrenv.h index 2e0d7436e1d..8cb949af314 100644 --- a/arch/risc-v/src/common/addrenv.h +++ b/arch/risc-v/src/common/addrenv.h @@ -52,6 +52,14 @@ # define ARCH_ADDRENV_VBASE (CONFIG_ARCH_DATA_VBASE) #endif +/* Maximum user address environment size */ + +#define ARCH_ADDRENV_MAX_SIZE (0x40000000) + +/* User address environment end */ + +#define ARCH_ADDRENV_VEND (ARCH_ADDRENV_VBASE + ARCH_ADDRENV_MAX_SIZE) + /**************************************************************************** * Public Function Prototypes ****************************************************************************/ diff --git a/arch/risc-v/src/common/pgalloc.h b/arch/risc-v/src/common/pgalloc.h index 9f01f839076..8619038ac7e 100644 --- a/arch/risc-v/src/common/pgalloc.h +++ b/arch/risc-v/src/common/pgalloc.h @@ -95,7 +95,7 @@ static inline bool riscv_uservaddr(uintptr_t vaddr) * heap, or stack regions. */ - return vaddr >= ARCH_ADDRENV_VBASE; + return vaddr >= ARCH_ADDRENV_VBASE && vaddr < ARCH_ADDRENV_VEND; } /****************************************************************************