On Thu, Nov 02, 2017 at 10:36:35AM +0000, Marc Zyngier wrote:
> On Wed, Nov 01 2017 at 11:17:27 am GMT, Andrew Jones <[email protected]> 
> wrote:
> > On Mon, Oct 23, 2017 at 05:11:19PM +0100, Marc Zyngier wrote:
> >> diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c
> >> index 2174244f6317..0417c8e2a81c 100644
> >> --- a/virt/kvm/arm/mmu.c
> >> +++ b/virt/kvm/arm/mmu.c
> >> @@ -1292,7 +1292,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, 
> >> phys_addr_t fault_ipa,
> >>                      unsigned long fault_status)
> >>  {
> >>    int ret;
> >> -  bool write_fault, writable, hugetlb = false, force_pte = false;
> >> +  bool write_fault, exec_fault, writable, hugetlb = false, force_pte = 
> >> false;
> >>    unsigned long mmu_seq;
> >>    gfn_t gfn = fault_ipa >> PAGE_SHIFT;
> >>    struct kvm *kvm = vcpu->kvm;
> >> @@ -1304,7 +1304,10 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, 
> >> phys_addr_t fault_ipa,
> >>    unsigned long flags = 0;
> >>  
> >>    write_fault = kvm_is_write_fault(vcpu);
> >> -  if (fault_status == FSC_PERM && !write_fault) {
> >> +  exec_fault = kvm_vcpu_trap_is_iabt(vcpu);
> >> +  VM_BUG_ON(write_fault && exec_fault);
> >
> > This VM_BUG_ON can never fire as long as kvm_is_write_fault() is
> > defined as
> >
> >  {
> >    if (kvm_vcpu_trap_is_iabt(vcpu))
> >        return false;
> >    return kvm_vcpu_dabt_iswrite(vcpu);
> >  }
> 
> That's indeed what I expect. But given that the code now relies on this
> property, I chose to make it explicit.
> 
> Or are you seeing a better way of making this an invariant?
>

No, I wish I did, because then I wouldn't have to apologize for the
noise :-) The VM_BUG_ON() does indeed improve the code by documenting/
enforcing the requirement.

Thanks,
drew
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to