From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33933 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OdK6F-0007g1-Do for qemu-devel@nongnu.org; Mon, 26 Jul 2010 05:36:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OdK6A-0006m3-D1 for qemu-devel@nongnu.org; Mon, 26 Jul 2010 05:35:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40398) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OdK6A-0006li-5K for qemu-devel@nongnu.org; Mon, 26 Jul 2010 05:35:50 -0400 Date: Mon, 26 Jul 2010 12:30:24 +0300 From: "Michael S. Tsirkin" Message-ID: <20100726093024.GB21064@redhat.com> References: <1279898202-7223-1-git-send-email-Jes.Sorensen@redhat.com> <20100724190300.GB3728@redhat.com> <4C4D2FEF.50106@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4C4D2FEF.50106@redhat.com> Subject: [Qemu-devel] Re: [PATCH] vhost_dev_unassign_memory() don't assert if removing first entry in list. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jes Sorensen Cc: qemu-devel@nongnu.org On Mon, Jul 26, 2010 at 08:49:19AM +0200, Jes Sorensen wrote: > On 07/24/10 21:03, Michael S. Tsirkin wrote: > > On Fri, Jul 23, 2010 at 05:16:42PM +0200, Jes.Sorensen@redhat.com wrote: > >> From: Jes Sorensen > >> diff --git a/hw/vhost.c b/hw/vhost.c > >> index d37a66e..f30cf91 100644 > >> --- a/hw/vhost.c > >> +++ b/hw/vhost.c > >> @@ -119,7 +119,6 @@ static void vhost_dev_unassign_memory(struct vhost_dev *dev, > >> if (start_addr <= reg->guest_phys_addr && memlast >= reglast) { > >> --dev->mem->nregions; > >> --to; > >> - assert(to >= 0); > >> ++overlap_middle; > >> continue; > >> } > > > > Good catch. > > I think I must have meant dev->mem->nregions >= 0. Does this work > > if you put in that assertion, or did I miss something else? > > It should work, but I don't see the point in adding the assert for that > case since the loop shouldn't be able to run down to nregions < 0. Yes, we never decrement twice for the same region, so it will never become negative. Unless there's a bug in code. Which is exactly what assert guards against. This can also be seen as a form of documentation which checks itself for currectness. Maybe we should have assert(to >= -1) as well. But I don't feel strongly about these asserts, if you dislike them, let me know and I'll apply as is. > Cheers, > Jes