Am 13/09/2022 um 04:56 schrieb Yang, Weijiang: > > On 9/9/2022 6:45 PM, Emanuele Giuseppe Esposito wrote: >> Just a function split. No functional change intended, >> except for the fact that kvm_prepare_batch() does not >> immediately call kvm_set_memslot() if batch->change is >> KVM_MR_DELETE, but delegates the caller (__kvm_set_memory_region). >> >> >> +static int kvm_check_memory_region(struct kvm *kvm, >> + const struct kvm_userspace_memory_region *mem, >> + struct kvm_internal_memory_region_list *batch) >> +{ >> + int r; >> + >> + r = check_memory_region_flags(mem); >> + if (r) >> + return r; >> - r = kvm_set_memslot(kvm, batch); >> + r = kvm_check_mem(mem); >> if (r) >> - kfree(new); >> + return r; >> + >> + r = kvm_prepare_batch(kvm, mem, batch); >> + if (r && batch->new) >> + kfree(batch->new); > From the patch, r !=0 and batch->new !=NULL are exclusive, so free() > here is not reachable. Good point, I'll get rid of this. Thank you, Emanuele >> + >> return r; >> } > [...] >> >