From d4655a2f6c22f01f0cf242c66aacdcf7076956bc Mon Sep 17 00:00:00 2001 From: Matheus Date: Tue, 20 Sep 2022 17:00:30 -0300 Subject: [PATCH] syscalls: no longer have invalid state after execve error --- src/sys/syscalls/execve.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sys/syscalls/execve.c b/src/sys/syscalls/execve.c index c2f2aa26..d4adb97c 100644 --- a/src/sys/syscalls/execve.c +++ b/src/sys/syscalls/execve.c @@ -117,7 +117,7 @@ syscallret syscall_execve(const char* name, char* const argv[], char* const envp if(err){ spinlock_release(&thread->proc->lock); retv.errno = err; - return retv; + goto _clean; } void *entry, *stack; @@ -146,7 +146,9 @@ syscallret syscall_execve(const char* name, char* const argv[], char* const envp switch_thread(thread); _clean: - + + // TODO destroy new context + vmm_switchcontext(oldctx); destroyvec(argbuff, argc+1); destroyvec(envbuff, envc+1); free(namebuff);