On Wed, Nov 14, 2012 at 10:43 AM, Rik van Riel <riel@xxxxxxxxxx> wrote: > >> - even *more* aggressive: if the bits become strictly more >> restrictive sorry, this was meant to be "permissive", not restrictive. >> how about not flushing the TLB at all, *and* not even >> changing the page tables, and just teaching the page fault code to do >> it lazily at fault time? > > > How can we do that in a safe way? > > Unless we change the page tables, and flush the TLBs before > returning to userspace, the mprotect may not take effect for > an arbitrarily large period of time. My mistake - the point is that if we're changing to a strictly more permissive mode, the old state of the page tables and TLB's are perfectly "valid", they are just unnecessarily strict. So we'll take a fault on some accesses, but that's fine - we can fix things up at fault time. The question then becomes what the access patterns are. The fault overhead may well dawrf any TLB flush costs, but it depends on whether people tend to do large mprotect() and then just actually change a few pages, or whether mprotect() users often then touch all of the area.. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>