diff options
author | Lorenzo Stoakes <lstoakes@gmail.com> | 2016-10-12 20:20:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-19 11:12:02 -0400 |
commit | 9beae1ea89305a9667ceaab6d0bf46a045ad71e7 (patch) | |
tree | 32df9181fe7354a3ea2d4cdc8e852a072f2a2346 /mm/memory.c | |
parent | 768ae309a96103ed02eb1e111e838c87854d8b51 (diff) |
mm: replace get_user_pages_remote() write/force parameters with gup_flags
This removes the 'write' and 'force' from get_user_pages_remote() and
replaces them with 'gup_flags' to make the use of FOLL_FORCE explicit in
callers as use of this flag can result in surprising behaviour (and
hence bugs) within the mm subsystem.
Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mm/memory.c b/mm/memory.c index fc1987dfd8cc..20a9adb7b36e 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -3873,6 +3873,10 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, | |||
3873 | { | 3873 | { |
3874 | struct vm_area_struct *vma; | 3874 | struct vm_area_struct *vma; |
3875 | void *old_buf = buf; | 3875 | void *old_buf = buf; |
3876 | unsigned int flags = FOLL_FORCE; | ||
3877 | |||
3878 | if (write) | ||
3879 | flags |= FOLL_WRITE; | ||
3876 | 3880 | ||
3877 | down_read(&mm->mmap_sem); | 3881 | down_read(&mm->mmap_sem); |
3878 | /* ignore errors, just check how much was successfully transferred */ | 3882 | /* ignore errors, just check how much was successfully transferred */ |
@@ -3882,7 +3886,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, | |||
3882 | struct page *page = NULL; | 3886 | struct page *page = NULL; |
3883 | 3887 | ||
3884 | ret = get_user_pages_remote(tsk, mm, addr, 1, | 3888 | ret = get_user_pages_remote(tsk, mm, addr, 1, |
3885 | write, 1, &page, &vma); | 3889 | flags, &page, &vma); |
3886 | if (ret <= 0) { | 3890 | if (ret <= 0) { |
3887 | #ifndef CONFIG_HAVE_IOREMAP_PROT | 3891 | #ifndef CONFIG_HAVE_IOREMAP_PROT |
3888 | break; | 3892 | break; |