БАЗЫ для ПРОЗВОНА тел +79139230330 Skype: prodawez390 Email: prodawez...@gmail.com (viber whatsapp telegram как телефон) Подробности и демо бесплатно!

2017-03-03 Thread linux-msdos@vger.kernel.org
BAZY dlya PROZVONA tel +79139230330 Skype: prodawez390 Email: prodawez...@gmail.com (viber whatsapp telegram kak telefon) Podrobnosti i demo besplatno! -- To unsubscribe from this list: send the line "unsubscribe linux-msdos" in the body of a message to majord...@vger.kernel.org More majordomo in

[v5 03/20] x86/mpx: Do not use R/EBP as base in the SIB byte with Mod = 0

2017-03-03 Thread Ricardo Neri
Section 2.2.1.2 of the Intel 64 and IA-32 Architectures Software Developer's Manual volume 2A states that when a SIB byte is used and the base of the SIB byte points to R/EBP (i.e., base = 5) and the mod part of the ModRM byte is zero, the value of such register will not be used as part of the addr

[v5 06/20] x86/insn-eval: Add utility functions to get segment selector

2017-03-03 Thread Ricardo Neri
When computing a linear address and segmentation is used, we need to know the base address of the segment involved in the computation. In most of the cases, the segment base address will be zero as in USER_DS/USER32_DS. However, it may be possible that a user space program defines its own segments

[v5 19/20] x86: Enable User-Mode Instruction Prevention

2017-03-03 Thread Ricardo Neri
User_mode Instruction Prevention (UMIP) is enabled by setting/clearing a bit in %cr4. It makes sense to enable UMIP at some point while booting, before user spaces come up. Like SMAP and SMEP, is not critical to have it enabled very early during boot. This is because UMIP is relevant only when the

[v5 18/20] x86/traps: Fixup general protection faults caused by UMIP

2017-03-03 Thread 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_e

[v5 20/20] selftests/x86: Add tests for User-Mode Instruction Prevention

2017-03-03 Thread Ricardo Neri
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 fau

[v5 14/20] x86/insn-eval: Add wrapper function for 16-bit and 32-bit address encodings

2017-03-03 Thread Ricardo Neri
Convert the function insn_get_add_ref into a wrapper function that calls the correct static address-decoding function depending on the size of the address. In this way, callers do not need to worry about calling the correct function and decreases the number of functions that need to be exposed. To

[v5 04/20] x86/mpx, x86/insn: Relocate insn util functions to a new insn-kernel

2017-03-03 Thread Ricardo Neri
Other kernel submodules can benefit from using the utility functions defined in mpx.c to obtain the addresses and values of operands contained in the general purpose registers. An instance of this is the emulation code used for instructions protected by the Intel User-Mode Instruction Prevention fe

[v5 16/20] x86: Add emulation code for UMIP instructions

2017-03-03 Thread Ricardo Neri
The feature User-Mode Instruction Prevention present in recent Intel processor prevents a group of instructions from being executed with CPL > 0. Otherwise, a general protection fault is issued. Rather than relaying this fault to the user space (in the form of a SIGSEGV signal), the instructions p

[v5 17/20] x86/umip: Force a page fault when unable to copy emulated result to user

2017-03-03 Thread Ricardo Neri
fixup_umip_exception will be called from do_general_protection. If the former returns false, the latter will issue a SIGSEGV with SEND_SIG_PRIV. However, when emulation is successful but the emulated result cannot be copied to user space memory, it is more accurate to issue a SIGSEGV with SEGV_MAPE

[v5 12/20] x86/insn: Support both signed 32-bit and 64-bit effective addresses

2017-03-03 Thread Ricardo Neri
The 32-bit and 64-bit address encodings are identical. This means that we can use the same function in both cases. In order to reuse the function for 32-bit address encodings, we must sign-extend our 32-bit signed operands to 64-bit signed variables (only for 64-bit builds). To decide on whether si

[v5 13/20] x86/insn-eval: Add support to resolve 16-bit addressing encodings

2017-03-03 Thread Ricardo Neri
Tasks running in virtual-8086 mode or in protected mode with code segment descriptors that specify 16-bit default address sizes via the D bit will use 16-bit addressing form encodings as described in the Intel 64 and IA-32 Architecture Software Developer's Manual Volume 2A Section 2.1.5. 16-bit add

[v5 11/20] insn/eval: Incorporate segment base in address computation

2017-03-03 Thread Ricardo Neri
insn_get_addr_ref returns the effective address as defined by the section 3.7.5.1 Vol 1 of the Intel 64 and IA-32 Architectures Software Developer's Manual. In order to compute the linear address, we must add to the effective address the segment base address as set in the segment descriptor. Furthe

[v5 15/20] x86/cpufeature: Add User-Mode Instruction Prevention definitions

2017-03-03 Thread Ricardo Neri
User-Mode Instruction Prevention is a security feature present in new Intel processors that, when set, prevents the execution of a subset of instructions if such instructions are executed in user mode (CPL > 0). Attempting to execute such instructions causes a general protection exception. The sub

[v5 10/20] x86/insn-eval: Do not use R/EBP as base if mod in ModRM is zero

2017-03-03 Thread Ricardo Neri
Section 2.2.1.3 of the Intel 64 and IA-32 Architectures Software Developer's Manual volume 2A states that when the mod part of the ModRM byte is zero and R/EBP is specified in the R/M part of such bit, the value of the aforementioned register should not be used in the address computation. Instead,

[v5 09/20] x86/insn-eval: Add functions to get default operand and address sizes

2017-03-03 Thread Ricardo Neri
These functions read the default values of the address and operand sizes as specified in the segment descriptor. This information is determined from the D and L bits. Hence, it can be used for both IA-32e 64-bit and 32-bit legacy modes. For virtual-8086 mode, the default address and operand sizes a

[v5 05/20] x86/insn-eval: Add utility functions to get register offsets

2017-03-03 Thread Ricardo Neri
The function insn_get_reg_offset takes as argument an enumeration that indicates the type of offset that is returned: the R/M part of the ModRM byte, the index of the SIB byte or the base of the SIB byte. Callers of this function would need the definition of such enumeration. This is not needed. In

[v5 08/20] x86/insn-eval: Add utility function to get segment descriptor base address

2017-03-03 Thread Ricardo Neri
With segmentation, the base address of the segment descriptor is needed to compute a linear address. The segment descriptor used in the address computation depends on either any segment override prefixes in the in the instruction or the default segment determined by the registers involved in the ad

[v5 07/20] x86/insn-eval: Add utility function to get segment descriptor

2017-03-03 Thread Ricardo Neri
The segment descriptor contains information that is relevant to how linear address need to be computed. It contains the default size of addresses as well as the base address of the segment. Thus, given a segment selector, we ought look at segment descriptor to correctly calculate the linear address

[v5 01/20] x86/mpx: Use signed variables to compute effective addresses

2017-03-03 Thread Ricardo Neri
Even though memory addresses are unsigned. The operands used to compute the effective address do have a sign. This is true for the r/m part of the ModRM byte, the base and index parts of the SiB byte as well as the displacement. Thus, signed variables shall be used when computing the effective addr

[v5 02/20] x86/mpx: Do not use SIB index if index points to R/ESP

2017-03-03 Thread Ricardo Neri
Section 2.2.1.2 of the Intel 64 and IA-32 Architectures Software Developer's Manual volume 2A states that when memory addressing is used (i.e., mod part of ModR/M is not 3), a SIB byte is used and the index of the SIB byte points to the R/ESP (i.e., index = 4), the index should not be used in the c

[v5 00/20] x86: Enable User-Mode Instruction Prevention

2017-03-03 Thread Ricardo Neri
This is v5 of this series. The four previous submissions can be found here [1], here [2], here[3], and here [4]. This version addresses the comments received in v4 plus improvements of the handling of emulation in 64-bit builds. Please see details in the change log. === What is UMIP? User-Mode In