mirror of https://gitee.com/openkylin/linux.git
vmw_balloon: fix inflation with batching
Embarrassingly, the recent fix introduced worse problem than it solved,
causing the balloon not to inflate. The VM informed the hypervisor that
the pages for lock/unlock are sitting in the wrong address, as it used
the page that is used the uninitialized page variable.
Fixes: b23220fe05
("vmw_balloon: fixing double free when batching mode is off")
Cc: stable@vger.kernel.org
Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
Signed-off-by: Nadav Amit <namit@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7daf201d7f
commit
90d72ce079
|
@ -467,7 +467,7 @@ static int vmballoon_send_batched_lock(struct vmballoon *b,
|
||||||
unsigned int num_pages, bool is_2m_pages, unsigned int *target)
|
unsigned int num_pages, bool is_2m_pages, unsigned int *target)
|
||||||
{
|
{
|
||||||
unsigned long status;
|
unsigned long status;
|
||||||
unsigned long pfn = page_to_pfn(b->page);
|
unsigned long pfn = PHYS_PFN(virt_to_phys(b->batch_page));
|
||||||
|
|
||||||
STATS_INC(b->stats.lock[is_2m_pages]);
|
STATS_INC(b->stats.lock[is_2m_pages]);
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ static bool vmballoon_send_batched_unlock(struct vmballoon *b,
|
||||||
unsigned int num_pages, bool is_2m_pages, unsigned int *target)
|
unsigned int num_pages, bool is_2m_pages, unsigned int *target)
|
||||||
{
|
{
|
||||||
unsigned long status;
|
unsigned long status;
|
||||||
unsigned long pfn = page_to_pfn(b->page);
|
unsigned long pfn = PHYS_PFN(virt_to_phys(b->batch_page));
|
||||||
|
|
||||||
STATS_INC(b->stats.unlock[is_2m_pages]);
|
STATS_INC(b->stats.unlock[is_2m_pages]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue