On Tue, Dec 06, 2022 at 05:28:07PM +0100, David Hildenbrand wrote:
If no one is using mprotect() with uffd-wp like that, then the reproducer
may not be valid - the reproducer is defining how it should work, but does
that really stand? That's why I said it's ambiguous, because the
definition in this case is unclear.
There are interesting variations like:
mmap(PROT_READ, MAP_POPULATE|MAP_SHARED)
uffd_wp()
mprotect(PROT_READ|PROT_WRITE)
Where we start out with all-write permissions before we enable selective
write permissions.
Could you elaborate what's the difference of above comparing to:
mmap(PROT_READ|PROT_WRITE, MAP_POPULATE|MAP_SHARED)
uffd_wp()
?
Case (2) is rather a corner case, and unless people complain about it being
a real performance issue, it felt cleaner (less code) to not optimize for
that now.
As I didn't have a closer look on the savedwrite removal patchset so I may
not speak anything sensible here.. What I hope is that we don't lose write
bits easily, after all we tried to even safe the dirty and young bits to
avoid the machine cycles in the MMUs.
Again Peter, I am not against you, not at all. Sorry if I gave you the
impression. I highly appreciate your work and this discussion.
No worry on that part. You're doing great in this email explaining things
and write things up, especially I'm happy Hugh confirmed it so it's good to
have those. Let's start with something like this when you NAK something
next time. :)