[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] socket: Handle race condition between binds
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] socket: Handle race condition between binds to the same port |
Date: |
Wed, 14 Jun 2017 09:17:17 +0100 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Fri, Jun 09, 2017 at 09:19:49PM +0200, Knut Omang wrote:
> If an offset of ports is specified to the inet_listen_saddr function(),
> and two or more processes tries to bind from these ports at the same time,
> occasionally more than one process may be able to bind to the same
> port. The condition is detected by listen() but too late to avoid a failure.
>
> This function is called by socket_listen() and used
> by all socket listening code in QEMU, so all cases where any form of dynamic
> port selection is used should be subject to this issue.
>
> Add code to close and re-establish the socket when this
> condition is observed, hiding the race condition from the user.
>
> This has been developed and tested by means of the
> test-listen unit test in the previous commit.
> Enable the test for make check now that it passes.
>
> Signed-off-by: Knut Omang <address@hidden>
> Reviewed-by: Bhavesh Davda <address@hidden>
> Reviewed-by: Yuval Shaia <address@hidden>
> Reviewed-by: Girish Moodalbail <address@hidden>
> ---
> tests/Makefile.include | 2 +-
> util/qemu-sockets.c | 106 +++++++++++++++++++++++++++++-------------
> 2 files changed, 76 insertions(+), 32 deletions(-)
FYI, the changes here will conflict with a pull request that I have
pending, so please rebase against this PR
https://lists.gnu.org/archive/html/qemu-devel/2017-06/msg01940.html
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [Qemu-devel] [PATCH 0/2] Unit test+fix for problem with QEMU handling of multiple bind()s to the same port, Knut Omang, 2017/06/09
- [Qemu-devel] [PATCH 2/2] socket: Handle race condition between binds to the same port, Knut Omang, 2017/06/09
- Re: [Qemu-devel] [PATCH 2/2] socket: Handle race condition between binds to the same port,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH 1/2] Add test-listen - a stress test for QEMU socket listen, Knut Omang, 2017/06/09
- Re: [Qemu-devel] [PATCH 0/2] Unit test+fix for problem with QEMU handling of multiple bind()s to the same port, no-reply, 2017/06/09
- Re: [Qemu-devel] [PATCH 0/2] Unit test+fix for problem with QEMU handling of multiple bind()s to the same port, Eric Blake, 2017/06/09
- Re: [Qemu-devel] [PATCH 0/2] Unit test+fix for problem with QEMU handling of multiple bind()s to the same port, no-reply, 2017/06/09
- Re: [Qemu-devel] [PATCH 0/2] Unit test+fix for problem with QEMU handling of multiple bind()s to the same port, no-reply, 2017/06/09