|
@@ -324,6 +324,11 @@ static void rewrite_hypercall(struct lg_cpu *cpu)
|
|
u8 insn[3] = {0xcd, 0x1f, 0x90};
|
|
u8 insn[3] = {0xcd, 0x1f, 0x90};
|
|
|
|
|
|
__lgwrite(cpu, guest_pa(cpu, cpu->regs->eip), insn, sizeof(insn));
|
|
__lgwrite(cpu, guest_pa(cpu, cpu->regs->eip), insn, sizeof(insn));
|
|
|
|
+ /* The above write might have caused a copy of that page to be made
|
|
|
|
+ * (if it was read-only). We need to make sure the Guest has
|
|
|
|
+ * up-to-date pagetables. As this doesn't happen often, we can just
|
|
|
|
+ * drop them all. */
|
|
|
|
+ guest_pagetable_clear_all(cpu);
|
|
}
|
|
}
|
|
|
|
|
|
static bool is_hypercall(struct lg_cpu *cpu)
|
|
static bool is_hypercall(struct lg_cpu *cpu)
|