Messages in this thread | | | From | Linus Torvalds <> | Date | Fri, 17 Dec 2021 12:39:41 -0800 | Subject | Re: [PATCH v1 06/11] mm: support GUP-triggered unsharing via FAULT_FLAG_UNSHARE (!hugetlb) |
| |
On Fri, Dec 17, 2021 at 12:36 PM Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > > > 5. Take a R/O pin (RDMA, VFIO, ...) > > -> refcount > 1 > > > > 6. memset(mem, 0xff, pagesize); > > -> Write fault -> COW > > I do not believe this is actually a bug. > > You asked for a R/O pin, and you got one.
If you want a shared pin that actually follows the changes of your process around, then that is what you should have asked for.
At the time of such a shared pin, you can do what we already do: re-use the page if it has a refcount of 1. Or do an early COW event (feel free to avoid the "mark it writable and dirty").
But note: *refcount* of 1. Not "mapcount". Because mapcount would be broken garbage.
Linus
| |