> Something like this? > > --- > arch/x86/kvm/mmu/mmu.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index b5a44b8f5f7b..12790ccb8731 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -954,15 +954,16 @@ static void pte_list_remove(struct kvm *kvm, u64 *spte, > struct pte_list_desc *prev_desc; > int i; > > - if (!rmap_head->val) { > - pr_err("%s: %p 0->BUG\n", __func__, spte); > - BUG(); > - } else if (!(rmap_head->val & 1)) { > + if (KVM_BUG(!rmap_head->val, kvm, "rmap for %p is empty", spte)) > + return; > + > + if (!(rmap_head->val & 1)) { > rmap_printk("%p 1->0\n", spte); > - if ((u64 *)rmap_head->val != spte) { > - pr_err("%s: %p 1->BUG\n", __func__, spte); > - BUG(); > - } > + > + if (KVM_BUG((u64 *)rmap_head->val != spte, kvm, > + "single rmap for %p doesn't match", spte)) > + return; > + > rmap_head->val = 0; > } else { > rmap_printk("%p many->many\n", spte); > @@ -979,8 +980,7 @@ static void pte_list_remove(struct kvm *kvm, u64 *spte, > prev_desc = desc; > desc = desc->more; > } > - pr_err("%s: %p many->many\n", __func__, spte); > - BUG(); > + KVM_BUG(true, kvm, "no rmap for %p (many->many)", spte); > } > } > > > base-commit: d74237e747db7f9f27e821e6683d58185e846378 > -- > make sense, will update that in the next version.