From f139fff6ae7063c1965fa3085bb2585d7d838d72 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 30 Oct 2024 13:34:18 +0200 Subject: rpc actually marks and unmarks stack regions + Processes won't be able to read previous stack frames etc --- src/vmem.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/vmem.c') diff --git a/src/vmem.c b/src/vmem.c index 0404202..8c23d4f 100644 --- a/src/vmem.c +++ b/src/vmem.c @@ -427,9 +427,17 @@ vmflags_t sanitize_uvflags(vmflags_t flags) void handle_pagefault(vm_t addr) { + info("page fault at %lx\n", addr); struct tcb *t = cur_tcb(); - struct tcb *p = get_cproc(t); + if (in_rpc_stack(t, addr)) { + vm_t aligned = align_down(addr, BASE_PAGE_SIZE); + grow_rpc(t, aligned); + flush_tlb_all(); + return; + } + + struct tcb *p = get_cproc(t); size_t ref = __page(addr); struct mem_region *m = find_closest_used_region(&p->uvmem.region, addr); -- cgit v1.3