From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50599) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL3UZ-0005fW-Tr for qemu-devel@nongnu.org; Wed, 14 Jun 2017 04:17:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dL3UW-00084n-6q for qemu-devel@nongnu.org; Wed, 14 Jun 2017 04:17:31 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54882) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dL3UW-00084b-0Z for qemu-devel@nongnu.org; Wed, 14 Jun 2017 04:17:28 -0400 Date: Wed, 14 Jun 2017 09:17:17 +0100 From: "Daniel P. Berrange" Message-ID: <20170614081717.GA4370@redhat.com> Reply-To: "Daniel P. Berrange" References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH 2/2] socket: Handle race condition between binds to the same port List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Knut Omang Cc: Gerd Hoffmann , Paolo Bonzini , qemu-devel@nongnu.org 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 > Reviewed-by: Bhavesh Davda > Reviewed-by: Yuval Shaia > Reviewed-by: Girish Moodalbail > --- > 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 :|