From e9955a4bbad8e9ec2396f6f180b844a7f9c79c1b Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Wed, 5 Jun 2019 15:21:20 +0900 Subject: [PATCH] Make heap and stack private mapping Change-Id: I4306566b3bbbe27d206c5518a2d36d117ba4ca9f --- kernel/host.c | 2 +- kernel/process.c | 2 +- kernel/syscall.c | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/host.c b/kernel/host.c index b3ca7dd0..61715f09 100644 --- a/kernel/host.c +++ b/kernel/host.c @@ -254,7 +254,7 @@ int prepare_process_ranges_args_envs(struct thread *thread, #endif /* Map, copy and update args and envs */ - flags = VR_PROT_READ | VR_PROT_WRITE; + flags = VR_PROT_READ | VR_PROT_WRITE | VR_PRIVATE; flags |= VRFLAG_PROT_TO_MAXPROT(flags); addr = vm->region.map_start - PAGE_SIZE * SCD_RESERVED_COUNT; e = addr + PAGE_SIZE * ARGENV_PAGE_COUNT; diff --git a/kernel/process.c b/kernel/process.c index d1856ad0..cb1bec83 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2303,7 +2303,7 @@ int init_process_stack(struct thread *thread, struct program_load_desc *pn, memset(stack, 0, minsz); - vrflag = VR_STACK | VR_DEMAND_PAGING; + vrflag = VR_STACK | VR_DEMAND_PAGING | VR_PRIVATE; vrflag |= ((ap_flag & IHK_MC_AP_USER) ? VR_AP_USER : 0); vrflag |= PROT_TO_VR_FLAG(pn->stack_prot); vrflag |= VR_MAXPROT_READ | VR_MAXPROT_WRITE | VR_MAXPROT_EXEC; diff --git a/kernel/syscall.c b/kernel/syscall.c index 8420d7fa..618d8640 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -2203,6 +2203,7 @@ SYSCALL_DECLARE(brk) #else /* POSTK_DEBUG_ARCH_DEP_60 */ vrflag = VR_PROT_READ | VR_PROT_WRITE; #endif /* POSTK_DEBUG_ARCH_DEP_60 */ + vrflag |= VR_PRIVATE; vrflag |= VRFLAG_PROT_TO_MAXPROT(vrflag); old_brk_end_allocated = region->brk_end_allocated; ihk_mc_spinlock_lock_noirq(&cpu_local_var(current)->vm->memory_range_lock);