From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gregory Haskins Subject: Re: [KVM PATCH v5 3/4] KVM: Fix races in irqfd using new eventfd_kref_get interface Date: Sun, 28 Jun 2009 12:25:26 -0400 Message-ID: <4A479976.5040904@novell.com> References: <20090625132441.26748.641.stgit@dev.haskins.net> <20090625132826.26748.15607.stgit@dev.haskins.net> <20090628114846.GA11764@redhat.com> <4A4767C2.3010503@novell.com> <20090628125612.GA11866@redhat.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig15945200828BA935D18C1D26" Cc: kvm@vger.kernel.org, avi@redhat.com To: "Michael S. Tsirkin" Return-path: Received: from victor.provo.novell.com ([137.65.250.26]:40645 "EHLO victor.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751935AbZF1Q0Y (ORCPT ); Sun, 28 Jun 2009 12:26:24 -0400 In-Reply-To: <20090628125612.GA11866@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig15945200828BA935D18C1D26 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Michael S. Tsirkin wrote: > On Sun, Jun 28, 2009 at 08:53:22AM -0400, Gregory Haskins wrote: > =20 >> Michael S. Tsirkin wrote: >> =20 >>> On Thu, Jun 25, 2009 at 09:28:27AM -0400, Gregory Haskins wrote: >>> =20 >>> =20 >>>> eventfd currently emits a POLLHUP wakeup on f_ops->release() to gene= rate a >>>> "release" callback. This lets eventfd clients know if the eventfd i= s about >>>> to go away and is very useful particularly for in-kernel clients. H= owever, >>>> until recently it is not possible to use this feature of eventfd in = a >>>> race-free way. This patch utilizes a new eventfd interface to recti= fy >>>> the problem. >>>> >>>> Note that one final race is known to exist: the slow-work thread may= race >>>> with module removal. We are currently working with slow-work upstre= am >>>> to fix this issue as well. Since the code prior to this patch also >>>> races with module_put(), we are not making anything worse, but rathe= r >>>> shifting the cause of the race. Once the slow-work code is patched = we >>>> will be fixing the last remaining issue. >>>> =20 >>>> =20 >>> By the way, why are we using slow-work here? Wouldn't a regular >>> workqueue do just as well, with less code, and avoid the race? >>> >>> =20 >>> =20 >> I believe it will cause a problem if you do a "flush_work()" from insi= de >> a work-item. I could be wrong, of course, but it looks like a recipe = to >> deadlock. >> >> -Greg >> >> =20 > > Sure, but the idea is to only flush on kvm close, never from work item.= > > =20 The point of the flush on the eventfd side is to make sure we synchronize with outstanding injects before we free the irqfd. -Greg --------------enig15945200828BA935D18C1D26 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.11 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkpHmaAACgkQlOSOBdgZUxngigCfYtfTWeFHLxRHjmb5gvLXOooA ICsAn2qBH+1QqHj9OHU3BuNAXbf0eRtc =29Zj -----END PGP SIGNATURE----- --------------enig15945200828BA935D18C1D26--