mm: gup: use get_user_pages_unlocked

This allows those get_user_pages calls to pass FAULT_FLAG_ALLOW_RETRY to
the page fault in order to release the mmap_sem during the I/O.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Andres Lagar-Cavilla <andreslc@google.com>
Cc: Peter Feiner <pfeiner@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Este commit está contenido en:
Andrea Arcangeli
2015-02-11 15:27:26 -08:00
cometido por Linus Torvalds
padre a7b780750e
commit 7e33912849
Se han modificado 5 ficheros con 10 adiciones y 22 borrados

Ver fichero

@@ -23,17 +23,15 @@ struct page **ceph_get_direct_page_vector(const void __user *data,
if (!pages)
return ERR_PTR(-ENOMEM);
down_read(&current->mm->mmap_sem);
while (got < num_pages) {
rc = get_user_pages(current, current->mm,
rc = get_user_pages_unlocked(current, current->mm,
(unsigned long)data + ((unsigned long)got * PAGE_SIZE),
num_pages - got, write_page, 0, pages + got, NULL);
num_pages - got, write_page, 0, pages + got);
if (rc < 0)
break;
BUG_ON(rc == 0);
got += rc;
}
up_read(&current->mm->mmap_sem);
if (rc < 0)
goto fail;
return pages;