net/tap: Use qemu_close_all_open_fd()
Instead of using a slow implementation to close all open fd after forking, use qemu_close_all_open_fd(). Signed-off-by: Clément Léger <cleger@rivosinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20240802145423.3232974-6-cleger@rivosinc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
7532ca570a
commit
9996a35c64
17
net/tap.c
17
net/tap.c
@ -387,13 +387,20 @@ static TAPState *net_tap_fd_init(NetClientState *peer,
|
|||||||
|
|
||||||
static void close_all_fds_after_fork(int excluded_fd)
|
static void close_all_fds_after_fork(int excluded_fd)
|
||||||
{
|
{
|
||||||
int open_max = sysconf(_SC_OPEN_MAX), i;
|
const int skip_fd[] = {STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO,
|
||||||
|
excluded_fd};
|
||||||
|
unsigned int nskip = ARRAY_SIZE(skip_fd);
|
||||||
|
|
||||||
for (i = 3; i < open_max; i++) {
|
/*
|
||||||
if (i != excluded_fd) {
|
* skip_fd must be an ordered array of distinct fds, exclude
|
||||||
close(i);
|
* excluded_fd if already included in the [STDIN_FILENO - STDERR_FILENO]
|
||||||
}
|
* range
|
||||||
|
*/
|
||||||
|
if (excluded_fd <= STDERR_FILENO) {
|
||||||
|
nskip--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qemu_close_all_open_fd(skip_fd, nskip);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void launch_script(const char *setup_script, const char *ifname,
|
static void launch_script(const char *setup_script, const char *ifname,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user