diff options
author | Miaohe Lin <linmiaohe@huawei.com> | 2022-08-23 14:32:37 +0800 |
---|---|---|
committer | Sean Christopherson <seanjc@google.com> | 2022-08-24 13:47:49 -0700 |
commit | d7c9bfb9caaffd496ae44b258ec7c793677d3eeb (patch) | |
tree | c3cde73bdfc631cc9d47d4b9bd5dd72d0241a233 /arch/x86/kvm | |
parent | 6aa5c47c351b22c21205c87977c84809cd015fcf (diff) | |
download | linux-d7c9bfb9caaffd496ae44b258ec7c793677d3eeb.tar.bz2 |
KVM: x86/mmu: fix memoryleak in kvm_mmu_vendor_module_init()
When register_shrinker() fails, KVM doesn't release the percpu counter
kvm_total_used_mmu_pages leading to memoryleak. Fix this issue by calling
percpu_counter_destroy() when register_shrinker() fails.
Fixes: ab271bd4dfd5 ("x86: kvm: propagate register_shrinker return code")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Link: https://lore.kernel.org/r/20220823063237.47299-1-linmiaohe@huawei.com
[sean: tweak shortlog and changelog]
Signed-off-by: Sean Christopherson <seanjc@google.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r-- | arch/x86/kvm/mmu/mmu.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index e418ef3ecfcb..d25d55b1f0b5 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -6702,10 +6702,12 @@ int kvm_mmu_vendor_module_init(void) ret = register_shrinker(&mmu_shrinker, "x86-mmu"); if (ret) - goto out; + goto out_shrinker; return 0; +out_shrinker: + percpu_counter_destroy(&kvm_total_used_mmu_pages); out: mmu_destroy_caches(); return ret; |