From 1d76545248ce92a8749d555dd043d46de02f71e9 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Fri, 12 Mar 2021 17:17:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3sys=5Fexecve=E4=B8=AD?= =?UTF-8?q?=E4=B8=8D=E6=89=A7=E8=A1=8Crt=5Fhw=5Feanble=5Finterrupt?= =?UTF-8?q?=E4=BC=9A=E9=80=A0=E6=88=90tcb->scheduler=5Flock=5Fnest?= =?UTF-8?q?=E5=80=BC=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_syscall.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index ccbcdcc1d1..85665d38a7 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1783,7 +1783,7 @@ int sys_execve(const char *path, char *const argv[], char *const envp[]) } /* load ok, now set thread name and swap the data of lwp and new_lwp */ - rt_hw_interrupt_disable(); + level = rt_hw_interrupt_disable(); rt_strncpy(thread->name, path + last_backslash, RT_NAME_MAX); @@ -1807,11 +1807,14 @@ int sys_execve(const char *path, char *const argv[], char *const envp[]) /* to do: clsoe files with flag CLOEXEC */ lwp_mmu_switch(thread); + + rt_hw_interrupt_enable(level); + lwp_ref_dec(new_lwp); lwp_exec_user(lwp->args, thread->stack_addr + thread->stack_size, lwp->text_entry); - /* never reach here, so rt_hw_interrupt_enable is not needed */ + /* never reach here */ } rt_set_errno(EINVAL); quit: -- Gitee