From ffd7628d3f22571b9142302ef1141e13062f38ae Mon Sep 17 00:00:00 2001
From: Shiroko <hhx.xxm@gmail.com>
Date: Thu, 2 Jun 2022 15:45:06 +0800
Subject: [PATCH] 1

---
 kernel/memory/paging.c    | 4 +++-
 kernel/proc/execve.c      | 2 --
 kernel/syscall/syscalls.c | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/memory/paging.c b/kernel/memory/paging.c
index b2c42b7..4bded2e 100644
--- a/kernel/memory/paging.c
+++ b/kernel/memory/paging.c
@@ -194,7 +194,9 @@ pde_t alloc_page_dir() {
 int vm_copy(pde_t dst, pde_t src, char *start, char *end) {
     // debug
 #if PAGING_DEBUG
-    kprintf("do vm copy at va 0x%lx ~ 0x%lx.\n", start, end);
+    proc_t *proc = myproc();
+    kprintf("do vm copy at va 0x%lx ~ 0x%lx for [%d]%s.\n", start, end,
+            proc->pid, proc->name);
 #endif
 
     char   *a;
diff --git a/kernel/proc/execve.c b/kernel/proc/execve.c
index 592a0e2..00a97df 100644
--- a/kernel/proc/execve.c
+++ b/kernel/proc/execve.c
@@ -124,8 +124,6 @@ int do_execve(proc_t *old, dentry_t *cwd, const char *path, const char *argv[],
     }
 
     char *process_stack_top = (char *)(PROC_STACK_BASE - stack_pages * PG_SIZE);
-    // unload original stack
-    unmap_pages(old->page_dir, (void *)(process_stack_top), stack_pages, true);
     // load new stack
     map_pages(old->page_dir, (void *)(process_stack_top), process_stack,
               PROC_STACK_SIZE, PTE_TYPE_RW, true, false);
diff --git a/kernel/syscall/syscalls.c b/kernel/syscall/syscalls.c
index 450c40e..5739b26 100644
--- a/kernel/syscall/syscalls.c
+++ b/kernel/syscall/syscalls.c
@@ -589,7 +589,8 @@ void do_syscall(struct trap_context *trapframe) {
         assert(myproc(), "Proc invalid.");
         kprintf("PID %d calls invalid syscall with id %d.\n", myproc()->pid,
                 syscall_id);
-        trapframe->a0 = -1;
+        do_exit(myproc(), -1);
+        // trapframe->a0 = -1;
         return;
     }
     // TODO: strace
-- 
GitLab