On Thu, Feb 06, 2020 at 11:22:30AM -0800, Sean Christopherson wrote: > On Thu, Feb 06, 2020 at 02:06:41PM -0500, Peter Xu wrote: > > On Tue, Jan 21, 2020 at 02:31:52PM -0800, Sean Christopherson wrote: > > > > [...] > > > > > @@ -1101,52 +1099,55 @@ int __kvm_set_memory_region(struct kvm *kvm, > > > if (mem->guest_phys_addr + mem->memory_size < mem->guest_phys_addr) > > > return -EINVAL; > > > > > > - slot = id_to_memslot(__kvm_memslots(kvm, as_id), id); > > > - base_gfn = mem->guest_phys_addr >> PAGE_SHIFT; > > > - npages = mem->memory_size >> PAGE_SHIFT; > > > - > > > - if (npages > KVM_MEM_MAX_NR_PAGES) > > > - return -EINVAL; > > > - > > > /* > > > * Make a full copy of the old memslot, the pointer will become stale > > > * when the memslots are re-sorted by update_memslots(). > > > */ > > > - old = *slot; > > > + tmp = id_to_memslot(__kvm_memslots(kvm, as_id), id); > > > + old = *tmp; > > > + tmp = NULL; > > > > Shall we keep this chunk to the patch where it will be used? Other > > than that, it looks good to me. > > I assume you're talking about doing this instead of using @tmp? > > old = *id_to_memslot(__kvm_memslots(kvm, as_id), id); Yes. > > It's obviously possible, but I really like resulting diff for > __kvm_set_memory_region() in "KVM: Terminate memslot walks via used_slots" > when tmp is used. > > @@ -1104,8 +1203,13 @@ int __kvm_set_memory_region(struct kvm *kvm, > * when the memslots are re-sorted by update_memslots(). > */ > tmp = id_to_memslot(__kvm_memslots(kvm, as_id), id); > - old = *tmp; > - tmp = NULL; > + if (tmp) { > + old = *tmp; > + tmp = NULL; > + } else { > + memset(&old, 0, sizeof(old)); > + old.id = id; > + } I normally don't do that, for each patch I'll try to make it consistent to itself, assuming that follow-up patches can be rejected. I don't have strong opinion either, please feel free to keep them if no one disagrees. -- Peter Xu