mirror of
https://gitlab.com/qemu-project/qemu.git
synced 2024-09-13 20:26:46 +03:00
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)
|
||||
{
|
||||
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) {
|
||||
close(i);
|
||||
}
|
||||
/*
|
||||
* skip_fd must be an ordered array of distinct fds, exclude
|
||||
* 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,
|
||||
|
|
Loading…
Reference in New Issue
Block a user