On 07/19/2018 10:06 AM, Yu-cheng Yu wrote: > Which pte_write() do you think is right? There isn't one that's right. The problem is that the behavior right now is ambiguous. Some callers of pte_write() need to know about _PAGE_RW alone and others want to know if (_PAGE_RW || is_shstk()). The point is that you need both, plus a big audit of all the pte_write() users to ensure they use the right one. For instance, see spurious_fault_check(). We can get a shadowstack fault that also has X86_PF_WRITE, but pte_write()==0. That might make a shadowstack write fault falsely appear spurious.