[PATCH kernel] KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots
Fabiano Rosas
farosas at linux.ibm.com
Thu Sep 2 23:08:05 AEST 2021
Alexey Kardashevskiy <aik at ozlabs.ru> writes:
> On 02/09/2021 00:59, Fabiano Rosas wrote:
>> Alexey Kardashevskiy <aik at ozlabs.ru> 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 <aik at ozlabs.ru>
>>> ---
>>> 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
=D How interesting! And according to that link 'sz' means "Zero terminated
String". Imagine the confusion.. haha
>>
>>> +
>>> + if ((cb >> PAGE_SHIFT) > totalram_pages())
>>> + return -ENOMEM;
>>> +
>>> + slot->arch.rmap = vzalloc(cb);
>>> if (!slot->arch.rmap)
>>> return -ENOMEM;
>>> }
More information about the Linuxppc-dev
mailing list