... as they may take significant amounts of time.
This requires cloning the tweaked continuation logic from do_mmuext_op() to do_mmu_update().
Note that in mod_l[34]_entry() a negative "preemptible" value gets passed to put_page_from_l[34]e() now, telling the callee to store the respective page in current->arch.old_guest_table (for a hypercall continuation to pick up), rather than carrying out the put right away. This is going to be made a little more explicit by a subsequent cleanup patch.
This is part of CVE-2013-1918 / XSA-45.
b8efae6 x86: make page table handling error paths preemptible
xen/arch/x86/mm.c | 125 +++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 98 insertions(+), 27 deletions(-)
Upstream: xenbits.xen.org