Re: [PATCH] KVM: Fix srcu struct leakage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 09.11.2010 15:30, Avi Kivity wrote:
> On 11/09/2010 04:07 PM, Jan Kiszka wrote:
>>>
>>>  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.
> 
> ia64 virt is special - the guest has a virtual address space for host 
> data.  This data is shared with the host address space, but on different 
> addresses.
> 
> I guess to reduce tlb costs ia64 kvm uses a large order allocation for 
> both struct kvm and other random data, which is why the allocation is 
> different.
> 
> It could be refactored to something like
> 
> #ifndef CONFIG_HAVE_SPECIAL_KVM_ALLOC
> 
> static inline struct kvm *kvm_arch_alloc_vm(void)
> {
>      return kzalloc(...);
> }
> 
> static inline void kvm_arch_free_vm(struct kvm *kvm)
> {
>     kfree(kvm);
> }
> 
> #endif

Yep, that's what I'm already working on.

> 
> and have ia64 provide its special stuff.  The practice of duplicating 
> common code just because of one outlier is bad, there are better ways.
> 
> (and I will accept untested ia64 patches provided kvm-ia64@ is copied).

OK, will come. Refactoring will affect all archs, so all need to test
and ack.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux