• R
    x86/traps: Fix up general protection faults caused by UMIP · 6fc9dc81
    Ricardo Neri 提交于
    If the User-Mode Instruction Prevention CPU feature is available and
    enabled, a general protection fault will be issued if the instructions
    sgdt, sldt, sidt, str or smsw are executed from user-mode context
    (CPL > 0). If the fault was caused by any of the instructions protected
    by UMIP, fixup_umip_exception() will emulate dummy results for these
    instructions as follows: in virtual-8086 and protected modes, sgdt, sidt
    and smsw are emulated; str and sldt are not emulated. No emulation is done
    for user-space long mode processes.
    
    If emulation is successful, the emulated result is passed to the user space
    program and no SIGSEGV signal is emitted.
    Signed-off-by: NRicardo Neri <ricardo.neri-calderon@linux.intel.com>
    Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: NAndy Lutomirski <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chen Yucong <slaoub@gmail.com>
    Cc: Chris Metcalf <cmetcalf@mellanox.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi V. Shankar <ravi.v.shankar@intel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: ricardo.neri@intel.com
    Link: http://lkml.kernel.org/r/1509935277-22138-11-git-send-email-ricardo.neri-calderon@linux.intel.com
    [ Added curly braces. ]
    Signed-off-by: NIngo Molnar <mingo@kernel.org>
    6fc9dc81
traps.c 26.1 KB