]> git.baikalelectronics.ru Git - kernel.git/commit
lguest, x86/entry/32: Fix handling of guest syscalls using interrupt gates
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 1 Apr 2016 01:45:46 +0000 (12:15 +1030)
committerIngo Molnar <mingo@kernel.org>
Fri, 1 Apr 2016 06:58:13 +0000 (08:58 +0200)
commit5274279624f49f66e1f9b1616a7890d838a0d280
treeaa18b1303e0082c527e5fad3b4d43631cd0d4fb1
parent5a553f3f6b1cef80ec2d4f437df0a79981228b31
lguest, x86/entry/32: Fix handling of guest syscalls using interrupt gates

In 59072bd3fc3d ("x86/entry/32: Change INT80 to be an interrupt gate")
Andy broke lguest.  This is because lguest had special code to allow
the 0x80 trap gate go straight into the guest itself; interrupts gates
(without more work, as mentioned in the file's comments) bounce via
the hypervisor.

His change made them go via the hypervisor, but as it's in the range of
normal hardware interrupts, they were not directed through to the guest
at all.  Turns out the guest userspace isn't very effective if syscalls
are all noops.

I haven't ripped out all the now-useless trap-direct-to-guest-kernel
code yet, since it will still be needed if someone decides to update
this optimization.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Weisbecker <fweisbec@gmail.com>
Cc: x86\@kernel.org
Link: http://lkml.kernel.org/r/87fuv685kl.fsf@rustcorp.com.au
Signed-off-by: Ingo Molnar <mingo@kernel.org>
drivers/lguest/interrupts_and_traps.c
drivers/lguest/lg.h
drivers/lguest/x86/core.c