|
@@ -11,10 +11,7 @@
|
|
* get_vaddr_frames() - map virtual addresses to pfns
|
|
* get_vaddr_frames() - map virtual addresses to pfns
|
|
* @start: starting user address
|
|
* @start: starting user address
|
|
* @nr_frames: number of pages / pfns from start to map
|
|
* @nr_frames: number of pages / pfns from start to map
|
|
- * @write: whether pages will be written to by the caller
|
|
|
|
- * @force: whether to force write access even if user mapping is
|
|
|
|
- * readonly. See description of the same argument of
|
|
|
|
- get_user_pages().
|
|
|
|
|
|
+ * @gup_flags: flags modifying lookup behaviour
|
|
* @vec: structure which receives pages / pfns of the addresses mapped.
|
|
* @vec: structure which receives pages / pfns of the addresses mapped.
|
|
* It should have space for at least nr_frames entries.
|
|
* It should have space for at least nr_frames entries.
|
|
*
|
|
*
|
|
@@ -34,23 +31,17 @@
|
|
* This function takes care of grabbing mmap_sem as necessary.
|
|
* This function takes care of grabbing mmap_sem as necessary.
|
|
*/
|
|
*/
|
|
int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
|
|
int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
|
|
- bool write, bool force, struct frame_vector *vec)
|
|
|
|
|
|
+ unsigned int gup_flags, struct frame_vector *vec)
|
|
{
|
|
{
|
|
struct mm_struct *mm = current->mm;
|
|
struct mm_struct *mm = current->mm;
|
|
struct vm_area_struct *vma;
|
|
struct vm_area_struct *vma;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
int err;
|
|
int err;
|
|
int locked;
|
|
int locked;
|
|
- unsigned int gup_flags = 0;
|
|
|
|
|
|
|
|
if (nr_frames == 0)
|
|
if (nr_frames == 0)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- if (write)
|
|
|
|
- gup_flags |= FOLL_WRITE;
|
|
|
|
- if (force)
|
|
|
|
- gup_flags |= FOLL_FORCE;
|
|
|
|
-
|
|
|
|
if (WARN_ON_ONCE(nr_frames > vec->nr_allocated))
|
|
if (WARN_ON_ONCE(nr_frames > vec->nr_allocated))
|
|
nr_frames = vec->nr_allocated;
|
|
nr_frames = vec->nr_allocated;
|
|
|
|
|