Re: [patch 3/5] KVM: MMU: add kvm_mmu_get_spte_hierarchy helper

Avi Kivity
2009-06-11T14:31:05Z

Marcelo Tosatti wrote:
> Required by EPT misconfiguration handler.
>
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
>
> Index: kvm/arch/x86/kvm/mmu.c
> ===================================================================
> --- kvm.orig/arch/x86/kvm/mmu.c
> +++ kvm/arch/x86/kvm/mmu.c
> @@ -3013,6 +3013,24 @@ out:
> return r;
> }
>
> +int kvm_mmu_get_spte_hierarchy(struct kvm_vcpu *vcpu, u64 addr, u64 *sptes[4])
> +{
> + struct kvm_shadow_walk_iterator iterator;
> + int nr_sptes = 0;
> +
> + spin_lock(&vcpu->kvm->mmu_lock);
> + for_each_shadow_entry(vcpu, addr, iterator) {
> + sptes[iterator.level-1] = iterator.sptep;
>

Returning a pointer...

> + nr_sptes++;
> + if (!is_shadow_present_pte(*iterator.sptep))
> + break;
> + }
> + spin_unlock(&vcpu->kvm->mmu_lock);
>

... and unlocking the lock that protects it.

True, this is called in extreme cases, but I think you can dereference
the pointer in the function just as easily.

--
error compiling committee.c: too many arguments to function