On Sat, Mar 01, 2025 at 10:44:22AM -0500, Mathieu Desnoyers wrote: > > > Also, I notice that do_wp_page() only calls handle_userfault > > > VM_UFFD_WP when vm_fault flags does not have FAULT_FLAG_UNSHARE > > > set. > > > > AFAICT that's expected, unshare should only be set on reads, never writes. > > So uffd-wp shouldn't trap any of those. > > I'm confused by your comment. I thought unshare only applies to > *write* faults. What am I missing ? The major path so far to set unshare is here in GUP (ignoring two corner cases used in either s390 and ksm): if (unshare) { fault_flags |= FAULT_FLAG_UNSHARE; /* FAULT_FLAG_WRITE and FAULT_FLAG_UNSHARE are incompatible */ VM_BUG_ON(fault_flags & FAULT_FLAG_WRITE); } See the VM_BUG_ON() - if it's write it'll crash already. "unshare", in its earliest form of patch, used to be called COR (Copy-On-Read), which might be more straightforward in this case.. so it's the counterpart of COW but for read cases where a copy is required. The patchset that introduced it has more information (e.g. a7f2266041). Thanks, -- Peter Xu