On Fri, Jun 13, 2014 at 3:36 AM, David Herrmann [off-list ref] wrote:
When setting SEAL_WRITE, we must make sure nobody has a writable reference
to the pages (via GUP or similar). We currently check references and wait
some time for them to be dropped. This, however, might fail for several
reasons, including:
- the page is pinned for longer than we wait
- while we wait, someone takes an already pinned page for read-access
Therefore, this patch introduces page-isolation. When sealing a file with
SEAL_WRITE, we copy all pages that have an elevated ref-count. The newpage
is put in place atomically, the old page is detached and left alone. It
will get reclaimed once the last external user dropped it.
Signed-off-by: David Herrmann <redacted>
Won't this have unexpected effects?
Thread 1: start read into mapping backed by fd
Thread 2: SEAL_WRITE
Thread 1: read finishes. now the page doesn't match the sealed page
Is this okay? Or am I missing something?
Are there really things that keep unnecessary writable pins around?
--Andy
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>