From eabefb0794645a6ae73c1e1601c20dcf68b53610 Mon Sep 17 00:00:00 2001 From: Andrei Tatar Date: Thu, 24 Apr 2025 15:07:31 +0200 Subject: [PATCH] lib/posix-fdtab: Fix exec handler target fdtab This change makes the exec handler cloexec the target thread's fdtab instead of that of the calling thread's. Signed-off-by: Andrei Tatar Approved-by: Michalis Pappas Reviewed-by: Michalis Pappas GitHub-Closes: #1617 --- lib/posix-fdtab/fdtab.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/posix-fdtab/fdtab.c b/lib/posix-fdtab/fdtab.c index b3e91b792..1349ce67f 100644 --- a/lib/posix-fdtab/fdtab.c +++ b/lib/posix-fdtab/fdtab.c @@ -366,11 +366,22 @@ void uk_fdtab_cloexec(void) } #if CONFIG_LIBPOSIX_PROCESS_EXECVE -static int fdtab_handle_execve(void *data __unused) +#if CONFIG_LIBPOSIX_FDTAB_MULTITAB +static int fdtab_handle_execve(void *data) +{ + struct posix_process_execve_event_data *edat = data; + struct uk_fdtab *tab = uk_thread_uktls_var(edat->thread, active_fdtab); + + fdtab_cleanup(tab, 0); + return UK_EVENT_HANDLED_CONT; +} +#else /* !CONFIG_LIBPOSIX_FDTAB_MULTITAB */ +static int fdtab_handle_execve(void *data) { uk_fdtab_cloexec(); return UK_EVENT_HANDLED_CONT; } +#endif /* !CONFIG_LIBPOSIX_FDTAB_MULTITAB */ UK_EVENT_HANDLER_PRIO(POSIX_PROCESS_EXECVE_EVENT, fdtab_handle_execve, UK_PRIO_EARLIEST); -- 2.39.5