lguest: fix guest crash on non-linear addresses in gdt pvops
Fixes guest crash 'lguest: bad read address 0x4800000 len 256'
The new per-cpu allocator ends up handing a non-linear address to
write_gdt_entry. We do __pa() on it, and hand it to the host, which
kills us.
I've long wanted to make the hypercall "LOAD_GDT_ENTRY" to match the IDT
code, but had no pressing reason until now.
Signed-off-by:
Rusty Russell <rusty@rustcorp.com.au>
Cc: lguest@ozlabs.org
Showing
- arch/x86/include/asm/lguest_hcall.h 1 addition, 1 deletionarch/x86/include/asm/lguest_hcall.h
- arch/x86/lguest/boot.c 9 additions, 7 deletionsarch/x86/lguest/boot.c
- drivers/lguest/lg.h 2 additions, 1 deletiondrivers/lguest/lg.h
- drivers/lguest/segments.c 7 additions, 6 deletionsdrivers/lguest/segments.c
- drivers/lguest/x86/core.c 2 additions, 2 deletionsdrivers/lguest/x86/core.c
Loading
Please register or sign in to comment