On Wed, Feb 17, 2021 at 02:27:14PM -0800, Yu-cheng Yu wrote: > @@ -787,16 +802,34 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) > */ > val &= _PAGE_CHG_MASK; > val |= check_pgprot(newprot) & ~_PAGE_CHG_MASK; > + val = fixup_dirty_pte(val); Do I see it correctly that you can do here and below: /* * Fix up potential shadow stack page flags because the RO, Dirty PTE is * special. */ if (pte_dirty()) { pte_mkclean(); pte_mkdirty(); } ? That fixup thing looks grafted and not like a normal flow to me. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette