Re: [PATCH] KVM: Fix srcu struct leakage

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

 



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

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).

--
error compiling committee.c: too many arguments to function

--
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