From: Andrei Tatar Date: Thu, 24 Apr 2025 13:07:31 +0000 (+0200) Subject: lib/posix-fdtab: Fix exec handler target fdtab X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fstable;p=unikraft%2Funikraft.git 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 --- 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);