From 856307fb3d76db71741d7f3e77f3d191d4db0c1c Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 19 Jan 2019 19:15:39 +0000 Subject: [PATCH] syscall_exec32: set top properly --- Kernel/syscall_exec32.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Kernel/syscall_exec32.c b/Kernel/syscall_exec32.c index 4de23282..688f1e7a 100644 --- a/Kernel/syscall_exec32.c +++ b/Kernel/syscall_exec32.c @@ -151,7 +151,6 @@ arg_t _execve(void) goto nogood; } - /* FIXME: ugly - save this as valid_hdr modifies it */ true_brk = binflat.bss_end; @@ -210,6 +209,9 @@ arg_t _execve(void) top = progbase + bin_size; + udata.u_top = top; + udata.u_ptab->p_top = top; + // kprintf("user space at %p\n", progbase); // kprintf("top at %p\n", progbase + bin_size); @@ -430,11 +432,11 @@ uint8_t write_core_image(void) udata.u_count = sizeof(corehdr); writei(ino, 0); udata.u_sysio = false; - udata.u_base = MAPBASE; + udata.u_base = (uint8_t *)MAPBASE; udata.u_count = udata.u_break - MAPBASE; writei(ino, 0); udata.u_base = udata.u_sp; - udata.u_count = PROGTOP - (uint16_t)udata.u_sp; + udata.u_count = PROGTOP - (uint32_t)udata.u_sp; writei(ino, 0); i_unlock_deref(ino); return W_COREDUMP; -- 2.34.1