From 6100da8cd23c2ac446a915e7e56210dcc7efe262 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Thu, 1 Jul 2010 15:00:50 +0800 Subject: [PATCH] --- yaml --- r: 202383 b: refs/heads/master c: 95c87e2b4460a488ec7ce42f273893e410ab385a h: refs/heads/master i: 202381: 24223eaff572e6758be91b7cf7d774221373443d 202379: 27f70de7eff1a4a47c3283cbe36c850984346021 202375: 32c57971c242a1960af0c556f4fd197a67da898f 202367: bb55bde4e6b510ecfa9b04e200e68492a0d70faf v: v3 --- [refs] | 2 +- trunk/virt/kvm/iommu.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 86d266c107a2..8ed0cf33cbfb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fef093bec0364ff5e6fd488cd81637f6bb3a2d0d +refs/heads/master: 95c87e2b4460a488ec7ce42f273893e410ab385a diff --git a/trunk/virt/kvm/iommu.c b/trunk/virt/kvm/iommu.c index 673c88a8efe9..779559552ce7 100644 --- a/trunk/virt/kvm/iommu.c +++ b/trunk/virt/kvm/iommu.c @@ -126,9 +126,10 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot) static int kvm_iommu_map_memslots(struct kvm *kvm) { - int i, r = 0; + int i, idx, r = 0; struct kvm_memslots *slots; + idx = srcu_read_lock(&kvm->srcu); slots = kvm_memslots(kvm); for (i = 0; i < slots->nmemslots; i++) { @@ -136,6 +137,7 @@ static int kvm_iommu_map_memslots(struct kvm *kvm) if (r) break; } + srcu_read_unlock(&kvm->srcu, idx); return r; } @@ -285,15 +287,17 @@ static void kvm_iommu_put_pages(struct kvm *kvm, static int kvm_iommu_unmap_memslots(struct kvm *kvm) { - int i; + int i, idx; struct kvm_memslots *slots; + idx = srcu_read_lock(&kvm->srcu); slots = kvm_memslots(kvm); for (i = 0; i < slots->nmemslots; i++) { kvm_iommu_put_pages(kvm, slots->memslots[i].base_gfn, slots->memslots[i].npages); } + srcu_read_unlock(&kvm->srcu, idx); return 0; }