Hi. I've been pointed out that my prev ring-0 patch was not completely safe. I was doing "popl %es". I thought it is save because RESTORE_REGS also does that with the fixup in place, but the anonymous guy thinks that if %es refers to LDT and the thread on another CPU changes that LDT entry in a mean time, my "popl %es" can GPF. So I have to avoid popping any segregs. I moved my recovery code to error_code, right after %es is used last time and before the %esp is used directly (I am lucky such a place exist there!). New patch is attached. Does it look safe this time?