From 5b9dd2fee8ad1f2716514a538f6d2582604232f8 Mon Sep 17 00:00:00 2001 From: Chen Chengjun Date: Thu, 30 May 2024 20:09:54 +0800 Subject: [PATCH] Clear the robust list during do_execve --- kernel/aster-nix/src/syscall/execve.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/aster-nix/src/syscall/execve.rs b/kernel/aster-nix/src/syscall/execve.rs index 7a592ca7c..70d2e1671 100644 --- a/kernel/aster-nix/src/syscall/execve.rs +++ b/kernel/aster-nix/src/syscall/execve.rs @@ -115,6 +115,10 @@ fn do_execve( let process_vm = current.vm(); load_program_to_vm(process_vm, elf_file.clone(), argv, envp, fs_resolver, 1)? }; + + // After the program has been successfully loaded, the virtual memory of the current process + // is initialized. Hence, it is necessary to clear the previously recorded robust list. + *posix_thread.robust_list().lock() = None; debug!("load elf in execve succeeds"); let credentials = credentials_mut();