Commit 507e72f8 authored by Paolo Bonzini's avatar Paolo Bonzini

Merge tag 'kvm-x86-generic-6.9' of https://github.com/kvm-x86/linux into HEAD

KVM common MMU changes for 6.9:

  - Harden KVM against underflowing the active mmu_notifier invalidation
    count, so that "bad" invalidations (usually due to bugs elsehwere in the
    kernel) are detected earlier and are less likely to hang the kernel.

  - Fix a benign bug in __kvm_mmu_topup_memory_cache() where the object size
    and number of objects parameters to kvmalloc_array() were swapped.
parents a81d95ae ea3689d9
...@@ -421,7 +421,7 @@ int __kvm_mmu_topup_memory_cache(struct kvm_mmu_memory_cache *mc, int capacity, ...@@ -421,7 +421,7 @@ int __kvm_mmu_topup_memory_cache(struct kvm_mmu_memory_cache *mc, int capacity,
if (WARN_ON_ONCE(!capacity)) if (WARN_ON_ONCE(!capacity))
return -EIO; return -EIO;
mc->objects = kvmalloc_array(sizeof(void *), capacity, gfp); mc->objects = kvmalloc_array(capacity, sizeof(void *), gfp);
if (!mc->objects) if (!mc->objects)
return -ENOMEM; return -ENOMEM;
...@@ -890,7 +890,9 @@ static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, ...@@ -890,7 +890,9 @@ static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
/* Pairs with the increment in range_start(). */ /* Pairs with the increment in range_start(). */
spin_lock(&kvm->mn_invalidate_lock); spin_lock(&kvm->mn_invalidate_lock);
wake = (--kvm->mn_active_invalidate_count == 0); if (!WARN_ON_ONCE(!kvm->mn_active_invalidate_count))
--kvm->mn_active_invalidate_count;
wake = !kvm->mn_active_invalidate_count;
spin_unlock(&kvm->mn_invalidate_lock); spin_unlock(&kvm->mn_invalidate_lock);
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment