aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/delegation.c
diff options
context:
space:
mode:
authorStephan Bärwolf <stephan.baerwolf@tu-ilmenau.de>2012-01-12 16:43:04 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-02 09:52:49 -0700
commitc401f604a75970a1e5c2718232b3c4c2060a3ee8 (patch)
treecd8bb52e80b7f7c59799aaf619a8c9c1603990ad /fs/nfs/delegation.c
parent90509a557798a023b3f5c46bebae62aa00e5da2a (diff)
downloadkernel_samsung_smdk4412-c401f604a75970a1e5c2718232b3c4c2060a3ee8.zip
kernel_samsung_smdk4412-c401f604a75970a1e5c2718232b3c4c2060a3ee8.tar.gz
kernel_samsung_smdk4412-c401f604a75970a1e5c2718232b3c4c2060a3ee8.tar.bz2
KVM: x86: fix missing checks in syscall emulation
commit c2226fc9e87ba3da060e47333657cd6616652b84 upstream. On hosts without this patch, 32bit guests will crash (and 64bit guests may behave in a wrong way) for example by simply executing following nasm-demo-application: [bits 32] global _start SECTION .text _start: syscall (I tested it with winxp and linux - both always crashed) Disassembly of section .text: 00000000 <_start>: 0: 0f 05 syscall The reason seems a missing "invalid opcode"-trap (int6) for the syscall opcode "0f05", which is not available on Intel CPUs within non-longmodes, as also on some AMD CPUs within legacy-mode. (depending on CPU vendor, MSR_EFER and cpuid) Because previous mentioned OSs may not engage corresponding syscall target-registers (STAR, LSTAR, CSTAR), they remain NULL and (non trapping) syscalls are leading to multiple faults and finally crashs. Depending on the architecture (AMD or Intel) pretended by guests, various checks according to vendor's documentation are implemented to overcome the current issue and behave like the CPUs physical counterparts. [mtosatti: cleanup/beautify code] Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/nfs/delegation.c')
0 files changed, 0 insertions, 0 deletions