Michal Privoznik 520eb3e15b vircommand: Introduce virCommandMassCloseRange()
This is brand new way of closing FDs before exec(). We need to
close all FDs except those we want to explicitly pass to avoid
leaking FDs into the child. Historically, we've done this by
either iterating over all opened FDs and closing them one by one
(or preserving them), or by iterating over an FD interval [2 ...
N] and closing them one by one followed by calling closefrom(N +
1). This is a lot of syscalls.

That's why Linux kernel developers introduced new close_from
syscall. It closes all FDs within given range, in a single
syscall. Since we keep list of FDs we want to preserve and pass
to the child process, we can use this syscall to close all FDs
in between. We don't even need to care about opened FDs.

Of course, we have to check whether the syscall is available and
fall back to the old implementation if it isn't.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
2023-08-24 12:45:00 +02:00
..
2023-02-14 13:59:45 +01:00
2023-04-06 12:48:22 +02:00
2023-02-14 13:59:45 +01:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2021-09-09 18:06:13 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2023-04-06 12:48:22 +02:00
2023-03-13 13:29:07 +01:00
2022-06-16 06:43:58 +02:00
2021-09-09 18:06:13 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2023-04-04 10:52:15 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2023-03-13 13:29:07 +01:00
2022-06-16 06:43:58 +02:00
2021-09-09 18:06:13 +02:00
2022-06-16 06:43:58 +02:00
2023-06-14 12:47:54 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2021-09-09 18:06:13 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00
2022-06-16 06:43:58 +02:00