On Mon, Mar 05, 2018 at 09:51:29AM -0500, Brian Gerst wrote: > For the IRET fault case you will still need to catch it in the > exception code. See the 64-bit code (.Lerror_bad_iret) for example. > For 32-bit, you could just expand that check to cover the whole exit > prologue after the CR3 switch, including the data segment loads. I had a look at the 64 bit code and the exception-in-kernel case seems to be handled differently than on 32 bit. The 64 bit entry code has checks for certain kinds of errors like iret exceptions. On 32 bit this is implemented via the standard exception tables which get an entry for every EIP that might fault (usually segment loading operations, but also iret). So, unless I am missing something, all the exception entry code has to do is to remember the stack and the cr3 with which it was entered (if entered from kernel mode) and restore those before iret. And this is what I implemented in v3 of this patch-set. Regards, Joerg -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>