> +/* > + * This is actually a page-missing access, but with uffd-wp special pte > + * installed. It means this pte was wr-protected before being unmapped. > + */ > +static vm_fault_t pte_marker_handle_uffd_wp(struct vm_fault *vmf) > +{ > + /* > + * Just in case there're leftover special ptes even after the region > + * got unregistered - we can simply clear them. We can also do that > + * proactively when e.g. when we do UFFDIO_UNREGISTER upon some uffd-wp > + * ranges, but it should be more efficient to be done lazily here. > + */ > + if (unlikely(!userfaultfd_wp(vmf->vma) || vma_is_anonymous(vmf->vma))) > + return pte_marker_clear(vmf); What would happen if we do a unregister followed by a register? IMHO we should start with a clean uffd-wp slate then. Your comment makes ma assume that we could receive stale WP events, which would be wrong? -- Thanks, David / dhildenb