On 11/19/21 14:47, Chao Peng wrote:
+
+       /* Prevent memslot modification */
+       spin_lock(&kvm->mn_invalidate_lock);
+       kvm->mn_active_invalidate_count++;
+       spin_unlock(&kvm->mn_invalidate_lock);
+
+       ret = __kvm_handle_useraddr_range(kvm, &useraddr_range);
+
+       spin_lock(&kvm->mn_invalidate_lock);
+       kvm->mn_active_invalidate_count--;
+       spin_unlock(&kvm->mn_invalidate_lock);
+


You need to follow this with a rcuwait_wake_up as in kvm_mmu_notifier_invalidate_range_end.

It's probably best if you move the manipulations of mn_active_invalidate_count from kvm_mmu_notifier_invalidate_range_* to two separate functions.

Paolo

Reply via email to