From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UbrjT-0002po-07 for qemu-devel@nongnu.org; Mon, 13 May 2013 08:20:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UbrjQ-0003qr-0C for qemu-devel@nongnu.org; Mon, 13 May 2013 08:19:58 -0400 Received: from mail-gh0-f177.google.com ([209.85.160.177]:42134) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UbrjP-0003qi-Rt for qemu-devel@nongnu.org; Mon, 13 May 2013 08:19:55 -0400 Received: by mail-gh0-f177.google.com with SMTP id f20so40914ghb.36 for ; Mon, 13 May 2013 05:19:55 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <5190DA66.1030408@redhat.com> Date: Mon, 13 May 2013 14:19:50 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1368442465-14363-1-git-send-email-david@gibson.dropbear.id.au> <1368442465-14363-7-git-send-email-david@gibson.dropbear.id.au> <20130513114817.GB14944@truffula.fritz.box> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 6/8] memory: Sanity check that no listeners remain on a destroyed AddressSpace List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: mst@redhat.com, aik@ozlabs.ru, agraf@suse.de, qemu-devel@nongnu.org, alex.williamson@redhat.com, David Gibson Il 13/05/2013 14:07, Peter Maydell ha scritto: > On 13 May 2013 12:48, David Gibson wrote: >> On Mon, May 13, 2013 at 12:10:10PM +0100, Peter Maydell wrote: >>> Hmm, is this the ideal semantics? Typically the owner of the >>> MemoryListener isn't the owner of the AddressSpace so it isn't >>> necessarily in a position to guarantee that it can unregister >>> the listener before the address space is destroyed. In fact >>> as the listener API is currently documented, the filter >>> argument is just an optimisation to save the callbacks having >>> to filter out irrelevant information themselves. >> >> If so, then it's broken by design. There's no guarantee that after an >> AddressSpace is destroyed another one won't be created at the same >> address (in fact, depending on your malloc() implementation, it could >> be very likely). So references by pointer to an object *must* be >> removed before the object itself is freed. > > Mmm. Looking through the code it turns out we don't actually > make use of the ability to pass NULL as a filter (except in > target-arm/kvm.c which was just me being lazy and not passing > in the system address space). Perhaps we should just drop that > capability, at which point you have a clearer "you are listening > on one AS and you must make sure you arrange to unregister before > that AS goes away" API definition? Yes, that could be an idea. Paolo