Re: [PATCH kernel] KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots
Alexey Kardashevskiy <[email protected]>
| Newsgroups | org.kernel.vger.kvm-ppc,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
On 02/09/2021 00:59, Fabiano Rosas wrote: > Alexey Kardashevskiy <[email protected]> writes: > >> The userspace can trigger "vmalloc size %lu allocation failure: exceeds >> total pages" via the KVM_SET_USER_MEMORY_REGION ioctl. >> >> This silences the warning by checking the limit before calling vzalloc() >> and returns ENOMEM if failed. >> >> This does not call underlying valloc helpers as __vmalloc_node() is only >> exported when CONFIG_TEST_VMALLOC_MODULE and __vmalloc_node_range() is not >> exported at all. >> >> Spotted by syzkaller. >> >> Signed-off-by: Alexey Kardashevskiy <[email protected]> >> --- >> arch/powerpc/kvm/book3s_hv.c | 8 ++++++-- >> 1 file changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c >> index 474c0cfde384..a59f1cccbcf9 100644 >> --- a/arch/powerpc/kvm/book3s_hv.c >> +++ b/arch/powerpc/kvm/book3s_hv.c >> @@ -4830,8 +4830,12 @@ static int kvmppc_core_prepare_memory_region_hv(struct kvm *kvm, >> unsigned long npages = mem->memory_size >> PAGE_SHIFT; >> >> if (change = KVM_MR_CREATE) { >> - slot->arch.rmap = vzalloc(array_size(npages, >> - sizeof(*slot->arch.rmap))); >> + unsigned long cb = array_size(npages, sizeof(*slot->arch.rmap)); > > What does cb mean? "count of bytes" This is from my deep Windows past :) https://docs.microsoft.com/en-us/windows/win32/stg/coding-style-conventions > >> + >> + if ((cb >> PAGE_SHIFT) > totalram_pages()) >> + return -ENOMEM; >> + >> + slot->arch.rmap = vzalloc(cb); >> if (!slot->arch.rmap) >> return -ENOMEM; >> } -- Alexey