• Ricardo Neri's avatar
    selftests/x86: Add tests for User-Mode Instruction Prevention · 9390afeb
    Ricardo Neri authored
    Certain user space programs that run on virtual-8086 mode may utilize
    instructions protected by the User-Mode Instruction Prevention (UMIP)
    security feature present in new Intel processors: SGDT, SIDT and SMSW. In
    such a case, a general protection fault is issued if UMIP is enabled. When
    such a fault happens, the kernel traps it and emulates the results of
    these instructions with dummy values. The purpose of this new
    test is to verify whether the impacted instructions can be executed
    without causing such #GP. If no #GP exceptions occur, we expect to exit
    virtual-8086 mode from INT3.
    
    The instructions protected by UMIP are executed in representative use
    cases:
    
     a) displacement-only memory addressing
     b) register-indirect memory addressing
     c) results stored directly in operands
    
    Unfortunately, it is not possible to check the results against a set of
    expected values because no emulation will occur in systems that do not
    have the UMIP feature. Instead, results are printed for verification. A
    simple verification is done to ensure that results of all tests are
    identical.
    Signed-off-by: default avatarRicardo Neri <ricardo.neri-calderon@linux.intel.com>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.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-12-git-send-email-ricardo.neri-calderon@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    9390afeb
entry_from_vm86.c 8.3 KB