On Thu, Sep 29, 2022 at 03:29:07PM -0700, Rick Edgecombe wrote: > @@ -300,6 +324,44 @@ static inline pte_t pte_clear_flags(pte_t pte, pteval_t clear) > return native_make_pte(v & ~clear); > } > > +/* > + * Normally the Dirty bit is used to denote COW memory on x86. But This is misleading; this isn't an x86 specific thing. The core-mm code does this. > + * in the case of X86_FEATURE_SHSTK, the software COW bit is used, > + * since the Dirty=1,Write=0 will result in the memory being treated > + * as shaodw stack by the HW. So when creating COW memory, a software > + * bit is used _PAGE_BIT_COW. The following functions pte_mkcow() and > + * pte_clear_cow() take a PTE marked conventially COW (Dirty=1) and > + * transition it to the shadow stack compatible version of COW (Cow=1). > + */