On Tue, 2023-01-31 at 09:46 +0100, David Hildenbrand wrote: > Sure ... > > but I reconsidered :) > > Maybe there is a cleaner way to do it and avoid the "NULL" argument. > > What about having (while you're going over everything already): > > pte_mkwrite(pte, vma) > pte_mkwrite_kernel(pte) > > The latter would only be used in that arch code where we're working > on > kernel pgtables. We already have pte_offset_kernel() and > pte_alloc_kernel_track(), so it's not too weird. Hmm, one downside is the "mk" part might lead people to guess pte_mkwrite_kernel() would make it writable AND a kernel page (like U/S=0 on x86). Instead of being a mkwrite() that's useful for setting on kernel PTEs. The other problem is that one of NULL passers is not for kernel memory. huge_pte_mkwrite() calls pte_mkwrite(). Shadow stack memory can't be created with MAP_HUGETLB, so it is not needed. Using pte_mkwrite_kernel() would look weird in this case, but making huge_pte_mkwrite() take a VMA would be for no reason. Maybe making huge_pte_mkwrite() take a VMA is the better of those two options. Or keep the NULL semantics... Any thoughts?