Re: [PATCH] KVM: x86: Fix rmap allocation for very large memslots

From: Maciej S. Szmigiero
Date: Thu Feb 10 2022 - 16:28:47 EST


On 28.01.2022 22:47, Sean Christopherson wrote:
On Fri, Jan 28, 2022, Maciej S. Szmigiero wrote:
From: "Maciej S. Szmigiero" <maciej.szmigiero@xxxxxxxxxx>

Commit 7661809d493b ("mm: don't allow oversized kvmalloc() calls") has
forbidden using kvmalloc() to make allocations larger than INT_MAX (2 GiB).

Unfortunately, adding a memslot exceeding 1 TiB in size will result in rmap
code trying to make an allocation exceeding this limit.
Besides failing this allocation, such operation will also trigger a
WARN_ON_ONCE() added by the aforementioned commit.

Since we probably still want to use kernel slab for small rmap allocations
let's only redirect such oversized allocations to vmalloc.

A possible alternative would be to add some kind of a __GFP_LARGE flag to
skip the INT_MAX check behind kvmalloc(), however this will impact the
common kernel memory allocation code, not just KVM.

Paolo has a cleaner fix for this[1][2], but it appears to have stalled out somewhere.

Paolo???

[1] https://lore.kernel.org/all/20211015165519.135670-1-pbonzini@xxxxxxxxxx
[2] https://lore.kernel.org/all/20211016064302.165220-1-pbonzini@xxxxxxxxxx

So, what we do here?

Apparently the cleaner fix at [2] wasn't picked up despite Kees giving
it his "Reviewed-by".

Thanks,
Maciej