On Mon, Jul 14, 2014 at 10:11 AM, Andy Lutomirski <l...@amacapital.net> wrote: > On Mon, Jul 14, 2014 at 10:04 AM, H. Peter Anvin <h...@zytor.com> wrote: >> On 07/09/2014 04:17 PM, Andy Lutomirski wrote: >>> This part in __do_double_fault looks fishy: >>> >>> cmpl $__KERNEL_CS,CS(%rdi) >>> jne do_double_fault >>> >>> Shouldn't that be: >>> >>> test $3,CS(%rdi) >>> jnz do_double_fault >>> >> >> No, it should be fine. The *only* case where we need to do the espfix >> magic is when we are on __KERNEL_CS. >> > > IIRC Xen has a somewhat different GDT, and at least the userspace CS > in IA32_STAR disagrees with normal Linux. If the kernel CS is also > strange, then there will be an extra possible CS value here.
There's FLAT_KERNEL_CS64, which is not equal to __KERNEL_CS. If the espfix mechanism gets invoked with that CS, then I expect that something unexpected will happen. That being said, FLAT_KERNEL_CS64 is CPL3, so my code might not be any better. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/