On Fri, Jun 13, 2014 at 3:36 AM, David Herrmann <dh.herrmann@xxxxxxxxx> 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 <dh.herrmann@xxxxxxxxx> 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 from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html