diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2018-01-10 11:26:59 -0500 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-01-11 10:53:13 -0500 |
| commit | ab271bd4dfd568060ffcf5a21b667c7c5df7ab99 (patch) | |
| tree | 938d708786a94958862ee10b51687d83ef0c42eb | |
| parent | 0217690f888e1894fd038b8e70aa5a5d6fd5e5d3 (diff) | |
x86: kvm: propagate register_shrinker return code
Patch "mm,vmscan: mark register_shrinker() as __must_check" is
queued for 4.16 in linux-mm and adds a warning about the unchecked
call to register_shrinker:
arch/x86/kvm/mmu.c:5485:2: warning: ignoring return value of 'register_shrinker', declared with attribute warn_unused_result [-Wunused-result]
This changes the kvm_mmu_module_init() function to fail itself
when the call to register_shrinker fails.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| -rw-r--r-- | arch/x86/kvm/mmu.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index e577bacd4bd0..2b8eb4da4d08 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
| @@ -5466,30 +5466,34 @@ static void mmu_destroy_caches(void) | |||
| 5466 | 5466 | ||
| 5467 | int kvm_mmu_module_init(void) | 5467 | int kvm_mmu_module_init(void) |
| 5468 | { | 5468 | { |
| 5469 | int ret = -ENOMEM; | ||
| 5470 | |||
| 5469 | kvm_mmu_clear_all_pte_masks(); | 5471 | kvm_mmu_clear_all_pte_masks(); |
| 5470 | 5472 | ||
| 5471 | pte_list_desc_cache = kmem_cache_create("pte_list_desc", | 5473 | pte_list_desc_cache = kmem_cache_create("pte_list_desc", |
| 5472 | sizeof(struct pte_list_desc), | 5474 | sizeof(struct pte_list_desc), |
| 5473 | 0, SLAB_ACCOUNT, NULL); | 5475 | 0, SLAB_ACCOUNT, NULL); |
| 5474 | if (!pte_list_desc_cache) | 5476 | if (!pte_list_desc_cache) |
| 5475 | goto nomem; | 5477 | goto out; |
| 5476 | 5478 | ||
| 5477 | mmu_page_header_cache = kmem_cache_create("kvm_mmu_page_header", | 5479 | mmu_page_header_cache = kmem_cache_create("kvm_mmu_page_header", |
| 5478 | sizeof(struct kvm_mmu_page), | 5480 | sizeof(struct kvm_mmu_page), |
| 5479 | 0, SLAB_ACCOUNT, NULL); | 5481 | 0, SLAB_ACCOUNT, NULL); |
| 5480 | if (!mmu_page_header_cache) | 5482 | if (!mmu_page_header_cache) |
| 5481 | goto nomem; | 5483 | goto out; |
| 5482 | 5484 | ||
| 5483 | if (percpu_counter_init(&kvm_total_used_mmu_pages, 0, GFP_KERNEL)) | 5485 | if (percpu_counter_init(&kvm_total_used_mmu_pages, 0, GFP_KERNEL)) |
| 5484 | goto nomem; | 5486 | goto out; |
| 5485 | 5487 | ||
| 5486 | register_shrinker(&mmu_shrinker); | 5488 | ret = register_shrinker(&mmu_shrinker); |
| 5489 | if (ret) | ||
| 5490 | goto out; | ||
| 5487 | 5491 | ||
| 5488 | return 0; | 5492 | return 0; |
| 5489 | 5493 | ||
| 5490 | nomem: | 5494 | out: |
| 5491 | mmu_destroy_caches(); | 5495 | mmu_destroy_caches(); |
| 5492 | return -ENOMEM; | 5496 | return ret; |
| 5493 | } | 5497 | } |
| 5494 | 5498 | ||
| 5495 | /* | 5499 | /* |
