On Wed, May 01, 2019 at 11:59:05AM -0700, Linus Torvalds wrote:
On Wed, May 1, 2019 at 11:52 AM Steven Rostedt rostedt@goodmis.org wrote:
I got Peter's patch working. Here it is. What do you think?
I can tell from just looking at it for five seconds that at least the 32-bit case is buggy.
You can't look at CS(%rsp) without first also checking that you're not coming from vm86 mode.
Something like so then?
Index: linux-2.6/arch/x86/entry/entry_32.S =================================================================== --- linux-2.6.orig/arch/x86/entry/entry_32.S +++ linux-2.6/arch/x86/entry/entry_32.S @@ -1479,6 +1479,10 @@ ENTRY(int3) ASM_CLAC pushl $-1 # mark this as an int
+#ifdef CONFIG_VM86 + testl $X86_EFLAGS_VM, PT_EFLAGS(%esp) + jnz .Lfrom_usermode_no_gap +#endif testl $SEGMENT_RPL_MASK, PT_CS(%esp) jnz .Lfrom_usermode_no_gap .rept 6