Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b14cb99 authored by Zachary Amsden's avatar Zachary Amsden Committed by Linus Torvalds
Browse files

Fix lazy mode vmalloc synchronization for paravirt



Touching vmalloc memory in the middle of a lazy mode update can generate
a kernel PDE update, which must be flushed immediately.  The fix is to
leave lazy mode when doing a vmalloc sync.

Signed-off-by: default avatarZachary Amsden <zach@vmware.com>
Acked-by: default avatarJeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent cb00e99c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -249,9 +249,10 @@ static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
	pmd_k = pmd_offset(pud_k, address);
	if (!pmd_present(*pmd_k))
		return NULL;
	if (!pmd_present(*pmd))
	if (!pmd_present(*pmd)) {
		set_pmd(pmd, *pmd_k);
	else
		arch_flush_lazy_mmu_mode();
	} else
		BUG_ON(pmd_page(*pmd) != pmd_page(*pmd_k));
	return pmd_k;
}