On Wed, Apr 28, 2021 at 3:04 AM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 28/04/21 00:36, Ben Gardon wrote: > > -static int kvm_alloc_memslot_metadata(struct kvm_memory_slot *slot, > > +static int kvm_alloc_memslot_metadata(struct kvm *kvm, > > + struct kvm_memory_slot *slot, > > unsigned long npages) > > { > > int i; > > @@ -10892,7 +10950,7 @@ static int kvm_alloc_memslot_metadata(struct kvm_memory_slot *slot, > > */ > > memset(&slot->arch, 0, sizeof(slot->arch)); > > > > - r = alloc_memslot_rmap(slot, npages); > > + r = alloc_memslot_rmap(kvm, slot, npages); > > if (r) > > return r; > > > > I wonder why you need alloc_memslot_rmap at all here in > kvm_alloc_memslot_metadata, or alternatively why you need to do it in > kvm_arch_assign_memslots. It seems like only one of those would be > necessary. Oh, that's a good point. We need it in kvm_arch_assign_memslots because of the race I identified in the thread for patch 5 of this series, but we could remove it from kvm_alloc_memslot_metadata with this patch. Of course, it would be much nicer if we could just keep it in kvm_alloc_memslot_metadata and find some other way to stop memslots without rmaps from being inappropriately installed, if anyone has a simpler way to accomplish that. > > Paolo >