On Sat, Jan 9, 2021 at 5:19 PM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > And no, I didn't make the UFFDIO_WRITEPROTECT code take the mmap_sem > for writing. For whoever wants to look at that, it's > mwriteprotect_range() in mm/userfaultfd.c and the fix is literally to > turn the read-lock (and unlock) into a write-lock (and unlock). Oh, and if it wasn't obvious, we'll have to debate what to do with trying to mprotect() a pinned page. Do we just ignore the pinned page (the way my clear_refs patch did)? Or do we turn it into -EBUSY? Or what? So it's not *just* the locking that needs to be fixed. But just take a look at that suggested clear_refs patch of mine - it sure isn't complicated. Linus