[libvirt] [PATCH 2/4] virNetSocket: Be more safe with fork() around virNetSocketDupFD()
Marc Hartmayer
mhartmay at linux.ibm.com
Fri Sep 21 14:15:12 UTC 2018
On Fri, Sep 21, 2018 at 11:29 AM +0200, Michal Privoznik <mprivozn at redhat.com> wrote:
> If there was a caller which would dup the client FD without
> CLOEXEC flag and later decided to change the flag it wouldn't be
> safe to do because fork() might have had occurred meantime.
> Switch to the other pattern - always dup FD with the flag set and
> let callers clear the flag if they need to do so.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
[…snip…]
>
>
> -int virNetSocketDupFD(virNetSocketPtr sock, bool cloexec)
> +int virNetSocketDupFD(virNetSocketPtr sock)
Might be useful to document this function.
> {
> int fd;
>
> - if (cloexec)
> - fd = fcntl(sock->fd, F_DUPFD_CLOEXEC, 0);
> - else
> - fd = dup(sock->fd);
> + fd = fcntl(sock->fd, F_DUPFD_CLOEXEC, 0);
> if (fd < 0) {
> virReportSystemError(errno, "%s",
> _("Unable to copy socket file handle"));
> diff --git a/src/rpc/virnetsocket.h b/src/rpc/virnetsocket.h
> index de795af917..e6bac27566 100644
> --- a/src/rpc/virnetsocket.h
> +++ b/src/rpc/virnetsocket.h
> @@ -124,7 +124,7 @@ virNetSocketPtr virNetSocketNewPostExecRestart(virJSONValuePtr object);
> virJSONValuePtr virNetSocketPreExecRestart(virNetSocketPtr sock);
>
> int virNetSocketGetFD(virNetSocketPtr sock);
> -int virNetSocketDupFD(virNetSocketPtr sock, bool cloexec);
> +int virNetSocketDupFD(virNetSocketPtr sock);
>
> bool virNetSocketIsLocal(virNetSocketPtr sock);
>
> --
> 2.16.4
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
Anyway, Reviewed-by: Marc Hartmayer <mhartmay at linux.ibm.com>
--
Kind regards / Beste Grüße
Marc Hartmayer
IBM Deutschland Research & Development GmbH
Vorsitzende des Aufsichtsrats: Martina Koederitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
More information about the libvir-list
mailing list