From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH] KVM: Fix srcu struct leakage Date: Tue, 09 Nov 2010 15:07:38 +0100 Message-ID: <4CD955AA.8040604@siemens.com> References: <4CD93366.5000209@siemens.com> <20101109135350.GA25952@amt.cnet> <4CD953D1.90802@siemens.com> <20101109140351.GA26116@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Avi Kivity , kvm To: Marcelo Tosatti Return-path: Received: from goliath.siemens.de ([192.35.17.28]:21646 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751792Ab0KIOHx (ORCPT ); Tue, 9 Nov 2010 09:07:53 -0500 In-Reply-To: <20101109140351.GA26116@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: Am 09.11.2010 15:03, Marcelo Tosatti wrote: > On Tue, Nov 09, 2010 at 02:59:45PM +0100, Jan Kiszka wrote: >> Am 09.11.2010 14:53, Marcelo Tosatti wrote: >>> On Tue, Nov 09, 2010 at 12:41:26PM +0100, Jan Kiszka wrote: >>>> Clean up the srcu struct on vm destruction. >>>> >>>> Signed-off-by: Jan Kiszka >>>> --- >>>> virt/kvm/kvm_main.c | 1 + >>>> 1 files changed, 1 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c >>>> index 4111a4b..6ec58d1 100644 >>>> --- a/virt/kvm/kvm_main.c >>>> +++ b/virt/kvm/kvm_main.c >>>> @@ -513,6 +513,7 @@ static void kvm_destroy_vm(struct kvm *kvm) >>>> #else >>>> kvm_arch_flush_shadow(kvm); >>>> #endif >>>> + cleanup_srcu_struct(&kvm->srcu); >>>> kvm_arch_destroy_vm(kvm); >>>> hardware_disable_all(); >>>> mmdrop(mm); >>>> -- >>>> 1.7.1 >>> >>> kvm_arch_destroy_vm does it. >> >> Oh, indeed. >> >> That I guess it's time to clean up, move generic allocation and release >> into generic code. Having kvm_arch_create/destroy_vm manage the kvm >> object allocation does not look very nice (and caused this confusion of >> mine). >> >> Jan > > kvm_iommu_unmap_guest enters SRCU critical section, and "struct kvm" is > freed at the end of kvm_arch_destroy_vm. Thats why its not in generic > code. The problem is the arch-specific allocation of the kvm object on IA64. All others simply call kmalloc/kzalloc for the struct itself, but IA64 embeds it into some larger context. Not sure why, though. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux