vmw_balloon: fix inflation with batching
Subsystems (3)
PATCH 1/1 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 b23220fe054e9 ("vmw_balloon: fixing double free when batching mode is off")
Reviewed-by Xavier Deguillard <[email protected]>
Signed-off-by Nadav Amit <[email protected]>
--- drivers/misc/vmw_balloon.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/misc/vmw_balloon.c +2 -2
@@ -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 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]);
@@ -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 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]);
Signature · 1 line
2.17.1